From 14c05f1e61045aeb2662c40a42f3013d3e245cd8 Mon Sep 17 00:00:00 2001 From: wbsong111 Date: Tue, 4 Aug 2026 13:04:57 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B9=B4=ED=83=88=EB=A1=9C=EA=B7=B8=EC=97=90?= =?UTF-8?q?=EC=84=9C=20kong=C2=B7unitycatalog=C2=B7rancher-monitoring(-crd?= =?UTF-8?q?)=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 불필요 판단으로 4개 차트 디렉토리를 통째로 삭제한다: - manifests/helm/kong/2.46.0 - manifests/helm/unitycatalog/0.2.0 (define-chart-resources.md에도 "사용 여부 검토 필요"로 이미 표시돼 있었음) - manifests/helm/rancher-monitoring/104.1.2+up57.0.3 - manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3 문서 정리: - doc/define-chart-resources.md: 4개 차트의 리소스 프로파일 섹션 + 요약 테이블 행 삭제(섹션 번호는 재정렬하지 않음 — 범위 밖의 큰 변경이라 별도로 둠) - doc/change-bitnami-image.md: kong·unity catalog 섹션 삭제(bitnami 이미지 치환 대상이 더 이상 없음) doc/chart-restructure-plan.md는 건드리지 않았다 — 2026-01-19 charts/→manifests/ 디렉토리 이전을 기록한 변경 이력이라, 그 시점에 실재했던 차트 목록을 지금 기준 으로 고치면 역사 기록이 왜곡된다. manifests/applicationset 등 다른 배포 경로에서 이 4개 차트를 참조하는 곳이 없음을 확인했다. Co-Authored-By: Claude Sonnet 5 --- doc/change-bitnami-image.md | 25 - doc/define-chart-resources.md | 187 - manifests/helm/kong/2.46.0/BUILD-README.md | 79 - manifests/helm/kong/2.46.0/CHANGELOG.md | 2003 ------ manifests/helm/kong/2.46.0/CUSTOM-README.md | 225 - manifests/helm/kong/2.46.0/Chart.lock | 6 - manifests/helm/kong/2.46.0/Chart.yaml | 17 - manifests/helm/kong/2.46.0/FAQs.md | 139 - manifests/helm/kong/2.46.0/README.md | 1245 ---- manifests/helm/kong/2.46.0/UPGRADE.md | 807 --- .../kong/2.46.0/charts/postgresql/.helmignore | 21 - .../kong/2.46.0/charts/postgresql/Chart.lock | 6 - .../kong/2.46.0/charts/postgresql/Chart.yaml | 30 - .../kong/2.46.0/charts/postgresql/README.md | 683 --- .../postgresql/charts/common/.helmignore | 22 - .../postgresql/charts/common/Chart.yaml | 23 - .../charts/postgresql/charts/common/README.md | 350 -- .../charts/common/templates/_affinities.tpl | 102 - .../charts/common/templates/_capabilities.tpl | 154 - .../charts/common/templates/_errors.tpl | 23 - .../charts/common/templates/_images.tpl | 76 - .../charts/common/templates/_ingress.tpl | 68 - .../charts/common/templates/_labels.tpl | 18 - .../charts/common/templates/_names.tpl | 70 - .../charts/common/templates/_secrets.tpl | 140 - .../charts/common/templates/_storage.tpl | 23 - .../charts/common/templates/_tplvalues.tpl | 13 - .../charts/common/templates/_utils.tpl | 62 - .../charts/common/templates/_warnings.tpl | 14 - .../templates/validations/_cassandra.tpl | 72 - .../common/templates/validations/_mariadb.tpl | 103 - .../common/templates/validations/_mongodb.tpl | 108 - .../common/templates/validations/_mysql.tpl | 103 - .../templates/validations/_postgresql.tpl | 129 - .../common/templates/validations/_redis.tpl | 76 - .../templates/validations/_validations.tpl | 46 - .../postgresql/charts/common/values.yaml | 5 - .../charts/postgresql/templates/NOTES.txt | 89 - .../charts/postgresql/templates/_helpers.tpl | 399 -- .../postgresql/templates/extra-list.yaml | 4 - .../templates/networkpolicy-egress.yaml | 32 - .../templates/primary/configmap.yaml | 24 - .../templates/primary/extended-configmap.yaml | 18 - .../primary/initialization-configmap.yaml | 15 - .../templates/primary/metrics-configmap.yaml | 16 - .../templates/primary/metrics-svc.yaml | 31 - .../templates/primary/networkpolicy.yaml | 57 - .../templates/primary/servicemonitor.yaml | 48 - .../templates/primary/statefulset.yaml | 634 -- .../templates/primary/svc-headless.yaml | 31 - .../postgresql/templates/primary/svc.yaml | 51 - .../postgresql/templates/prometheusrule.yaml | 22 - .../charts/postgresql/templates/psp.yaml | 41 - .../templates/read/extended-configmap.yaml | 18 - .../templates/read/metrics-configmap.yaml | 16 - .../templates/read/metrics-svc.yaml | 31 - .../templates/read/networkpolicy.yaml | 36 - .../templates/read/servicemonitor.yaml | 48 - .../templates/read/statefulset.yaml | 531 -- .../templates/read/svc-headless.yaml | 33 - .../charts/postgresql/templates/read/svc.yaml | 53 - .../charts/postgresql/templates/role.yaml | 31 - .../postgresql/templates/rolebinding.yaml | 22 - .../charts/postgresql/templates/secrets.yaml | 29 - .../postgresql/templates/serviceaccount.yaml | 19 - .../postgresql/templates/tls-secrets.yaml | 27 - .../charts/postgresql/values.schema.json | 156 - .../kong/2.46.0/charts/postgresql/values.yaml | 1399 ----- .../crds/custom-resource-definitions.yaml | 2974 --------- manifests/helm/kong/2.46.0/custom-values.yaml | 166 - .../helm/kong/2.46.0/templates/NOTES.txt | 48 - .../helm/kong/2.46.0/templates/_helpers.tpl | 1871 ------ .../2.46.0/templates/admission-webhook.yaml | 274 - .../kong/2.46.0/templates/certificate.yaml | 93 - .../kong/2.46.0/templates/config-dbless.yaml | 17 - .../templates/controller-rbac-resources.yaml | 170 - .../templates/controller-service-metrics.yaml | 25 - .../custom-resource-definitions.yaml | 34 - .../kong/2.46.0/templates/deployment.yaml | 314 - .../kong/2.46.0/templates/extraManifests.yaml | 4 - manifests/helm/kong/2.46.0/templates/hpa.yaml | 26 - .../kong/2.46.0/templates/ingress-class.yaml | 33 - .../templates/migrations-post-upgrade.yaml | 100 - .../templates/migrations-pre-upgrade.yaml | 102 - .../kong/2.46.0/templates/migrations.yaml | 111 - manifests/helm/kong/2.46.0/templates/pdb.yaml | 26 - manifests/helm/kong/2.46.0/templates/psp.yaml | 53 - .../2.46.0/templates/secret-sa-token.yaml | 14 - .../2.46.0/templates/service-account.yaml | 15 - .../2.46.0/templates/service-kong-admin.yaml | 113 - .../service-kong-cluster-telemetry.yaml | 17 - .../templates/service-kong-cluster.yaml | 17 - .../templates/service-kong-manager.yaml | 17 - .../templates/service-kong-portal-api.yaml | 19 - .../2.46.0/templates/service-kong-portal.yaml | 19 - .../2.46.0/templates/service-kong-proxy.yaml | 16 - .../templates/service-kong-udp-proxy.yaml | 15 - .../kong/2.46.0/templates/servicemonitor.yaml | 57 - .../templates/wait-for-postgres-script.yaml | 15 - manifests/helm/kong/2.46.0/values.yaml | 1279 ---- .../104.1.2+up57.0.3/BUILD-README.md | 53 - .../104.1.2+up57.0.3/CUSTOM-README.md | 26 - .../104.1.2+up57.0.3/Chart.yaml | 10 - .../104.1.2+up57.0.3/README.md | 24 - .../104.1.2+up57.0.3/custom-values.yaml | 4 - .../104.1.2+up57.0.3/files/crd-manifest.tgz | Bin 308570 -> 0 bytes .../104.1.2+up57.0.3/templates/_helpers.tpl | 30 - .../104.1.2+up57.0.3/templates/jobs.yaml | 102 - .../104.1.2+up57.0.3/templates/manifest.yaml | 8 - .../104.1.2+up57.0.3/templates/rbac.yaml | 76 - .../templates/validate-psp-install.yaml | 7 - .../104.1.2+up57.0.3/values.yaml | 17 - .../104.1.2+up57.0.3/BUILD-README.md | 80 - .../104.1.2+up57.0.3/CHANGELOG.md | 47 - .../104.1.2+up57.0.3/CONTRIBUTING.md | 12 - .../104.1.2+up57.0.3/CUSTOM-README.md | 118 - .../104.1.2+up57.0.3/Chart.yaml | 126 - .../104.1.2+up57.0.3/README.md | 1080 ---- .../104.1.2+up57.0.3/app-README.md | 46 - .../charts/grafana/.helmignore | 23 - .../charts/grafana/Chart.yaml | 39 - .../104.1.2+up57.0.3/charts/grafana/README.md | 770 --- .../grafana/dashboards/custom-dashboard.json | 1 - .../charts/grafana/templates/NOTES.txt | 55 - .../charts/grafana/templates/_config.tpl | 171 - .../charts/grafana/templates/_helpers.tpl | 305 - .../charts/grafana/templates/_pod.tpl | 1296 ---- .../charts/grafana/templates/clusterrole.yaml | 25 - .../grafana/templates/clusterrolebinding.yaml | 24 - .../grafana/templates/configSecret.yaml | 43 - .../configmap-dashboard-provider.yaml | 15 - .../charts/grafana/templates/configmap.yaml | 15 - .../templates/dashboards-json-configmap.yaml | 38 - .../charts/grafana/templates/deployment.yaml | 53 - .../grafana/templates/extra-manifests.yaml | 4 - .../grafana/templates/headless-service.yaml | 22 - .../charts/grafana/templates/hpa.yaml | 52 - .../templates/image-renderer-deployment.yaml | 131 - .../grafana/templates/image-renderer-hpa.yaml | 47 - .../image-renderer-network-policy.yaml | 79 - .../templates/image-renderer-service.yaml | 31 - .../image-renderer-servicemonitor.yaml | 48 - .../charts/grafana/templates/ingress.yaml | 78 - .../grafana/templates/networkpolicy.yaml | 61 - .../grafana/templates/nginx-config.yaml | 94 - .../templates/poddisruptionbudget.yaml | 22 - .../grafana/templates/podsecuritypolicy.yaml | 45 - .../charts/grafana/templates/pvc.yaml | 41 - .../charts/grafana/templates/role.yaml | 32 - .../charts/grafana/templates/rolebinding.yaml | 25 - .../charts/grafana/templates/secret-env.yaml | 14 - .../charts/grafana/templates/secret.yaml | 16 - .../charts/grafana/templates/service.yaml | 61 - .../grafana/templates/serviceaccount.yaml | 17 - .../grafana/templates/servicemonitor.yaml | 68 - .../charts/grafana/templates/statefulset.yaml | 58 - .../templates/tests/test-configmap.yaml | 20 - .../tests/test-podsecuritypolicy.yaml | 32 - .../grafana/templates/tests/test-role.yaml | 17 - .../templates/tests/test-rolebinding.yaml | 20 - .../templates/tests/test-serviceaccount.yaml | 12 - .../charts/grafana/templates/tests/test.yaml | 53 - .../charts/grafana/values.yaml | 1315 ---- .../charts/hardenedKubelet/.helmignore | 23 - .../charts/hardenedKubelet/Chart.yaml | 15 - .../charts/hardenedKubelet/README.md | 90 - .../hardenedKubelet/templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../charts/hardenedKubelet/values.yaml | 166 - .../charts/hardenedNodeExporter/.helmignore | 23 - .../charts/hardenedNodeExporter/Chart.yaml | 15 - .../charts/hardenedNodeExporter/README.md | 90 - .../templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../charts/hardenedNodeExporter/values.yaml | 166 - .../charts/k3sServer/.helmignore | 23 - .../charts/k3sServer/Chart.yaml | 15 - .../charts/k3sServer/README.md | 90 - .../charts/k3sServer/templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../k3sServer/templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../k3sServer/templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../charts/k3sServer/values.yaml | 166 - .../charts/kube-state-metrics/.helmignore | 21 - .../charts/kube-state-metrics/Chart.yaml | 32 - .../charts/kube-state-metrics/README.md | 85 - .../kube-state-metrics/templates/NOTES.txt | 23 - .../kube-state-metrics/templates/_helpers.tpl | 196 - .../templates/ciliumnetworkpolicy.yaml | 33 - .../templates/clusterrolebinding.yaml | 20 - .../templates/crs-configmap.yaml | 16 - .../templates/deployment.yaml | 314 - .../templates/extra-manifests.yaml | 4 - .../templates/kubeconfig-secret.yaml | 12 - .../templates/networkpolicy.yaml | 43 - .../kube-state-metrics/templates/pdb.yaml | 18 - .../templates/podsecuritypolicy.yaml | 39 - .../templates/psp-clusterrole.yaml | 19 - .../templates/psp-clusterrolebinding.yaml | 16 - .../templates/rbac-configmap.yaml | 22 - .../kube-state-metrics/templates/role.yaml | 215 - .../templates/rolebinding.yaml | 24 - .../kube-state-metrics/templates/service.yaml | 49 - .../templates/serviceaccount.yaml | 17 - .../templates/servicemonitor.yaml | 126 - .../templates/stsdiscovery-role.yaml | 26 - .../templates/stsdiscovery-rolebinding.yaml | 17 - .../templates/verticalpodautoscaler.yaml | 44 - .../charts/kube-state-metrics/values.yaml | 491 -- .../kubeAdmControllerManager/.helmignore | 23 - .../kubeAdmControllerManager/Chart.yaml | 15 - .../charts/kubeAdmControllerManager/README.md | 90 - .../templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../kubeAdmControllerManager/values.yaml | 166 - .../charts/kubeAdmEtcd/.helmignore | 23 - .../charts/kubeAdmEtcd/Chart.yaml | 15 - .../charts/kubeAdmEtcd/README.md | 90 - .../charts/kubeAdmEtcd/templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../kubeAdmEtcd/templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../charts/kubeAdmEtcd/values.yaml | 166 - .../charts/kubeAdmProxy/.helmignore | 23 - .../charts/kubeAdmProxy/Chart.yaml | 15 - .../charts/kubeAdmProxy/README.md | 90 - .../kubeAdmProxy/templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../charts/kubeAdmProxy/values.yaml | 166 - .../charts/kubeAdmScheduler/.helmignore | 23 - .../charts/kubeAdmScheduler/Chart.yaml | 15 - .../charts/kubeAdmScheduler/README.md | 90 - .../kubeAdmScheduler/templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../charts/kubeAdmScheduler/values.yaml | 166 - .../charts/prometheus-adapter/.helmignore | 21 - .../charts/prometheus-adapter/Chart.yaml | 28 - .../charts/prometheus-adapter/README.md | 160 - .../prometheus-adapter/templates/NOTES.txt | 9 - .../prometheus-adapter/templates/_helpers.tpl | 113 - .../templates/certmanager.yaml | 76 - .../cluster-role-binding-auth-delegator.yaml | 20 - .../cluster-role-binding-resource-reader.yaml | 20 - .../cluster-role-resource-reader.yaml | 24 - .../templates/configmap.yaml | 97 - .../templates/custom-metrics-apiservice.yaml | 34 - ...stom-metrics-cluster-role-binding-hpa.yaml | 24 - .../custom-metrics-cluster-role.yaml | 17 - .../templates/deployment.yaml | 143 - .../external-metrics-apiservice.yaml | 34 - ...rnal-metrics-cluster-role-binding-hpa.yaml | 20 - .../external-metrics-cluster-role.yaml | 21 - .../prometheus-adapter/templates/pdb.yaml | 23 - .../prometheus-adapter/templates/psp.yaml | 66 - .../resource-metrics-apiservice.yaml | 34 - ...resource-metrics-cluster-role-binding.yaml | 20 - .../resource-metrics-cluster-role.yaml | 23 - .../templates/role-binding-auth-reader.yaml | 21 - .../prometheus-adapter/templates/secret.yaml | 17 - .../prometheus-adapter/templates/service.yaml | 27 - .../templates/serviceaccount.yaml | 18 - .../charts/prometheus-adapter/values.yaml | 277 - .../prometheus-node-exporter/.helmignore | 21 - .../prometheus-node-exporter/Chart.yaml | 25 - .../charts/prometheus-node-exporter/README.md | 97 - .../templates/NOTES.txt | 29 - .../templates/_helpers.tpl | 236 - .../templates/clusterrole.yaml | 19 - .../templates/clusterrolebinding.yaml | 20 - .../templates/daemonset.yaml | 309 - .../templates/endpoints.yaml | 18 - .../templates/extra-manifests.yaml | 4 - .../templates/networkpolicy.yaml | 23 - .../templates/podmonitor.yaml | 91 - .../templates/psp-clusterrole.yaml | 14 - .../templates/psp-clusterrolebinding.yaml | 16 - .../templates/psp.yaml | 49 - .../templates/rbac-configmap.yaml | 16 - .../templates/service.yaml | 29 - .../templates/serviceaccount.yaml | 17 - .../templates/servicemonitor.yaml | 71 - .../templates/verticalpodautoscaler.yaml | 40 - .../prometheus-node-exporter/values.yaml | 530 -- .../charts/rke2ControllerManager/.helmignore | 23 - .../charts/rke2ControllerManager/Chart.yaml | 15 - .../charts/rke2ControllerManager/README.md | 90 - .../templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../charts/rke2ControllerManager/values.yaml | 166 - .../charts/rke2Etcd/.helmignore | 23 - .../charts/rke2Etcd/Chart.yaml | 15 - .../charts/rke2Etcd/README.md | 90 - .../charts/rke2Etcd/templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../rke2Etcd/templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../rke2Etcd/templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../charts/rke2Etcd/values.yaml | 166 - .../charts/rke2IngressNginx/.helmignore | 23 - .../charts/rke2IngressNginx/Chart.yaml | 15 - .../charts/rke2IngressNginx/README.md | 90 - .../rke2IngressNginx/templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../charts/rke2IngressNginx/values.yaml | 166 - .../charts/rke2Proxy/.helmignore | 23 - .../charts/rke2Proxy/Chart.yaml | 15 - .../charts/rke2Proxy/README.md | 90 - .../charts/rke2Proxy/templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../rke2Proxy/templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../rke2Proxy/templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../charts/rke2Proxy/values.yaml | 166 - .../charts/rke2Scheduler/.helmignore | 23 - .../charts/rke2Scheduler/Chart.yaml | 15 - .../charts/rke2Scheduler/README.md | 90 - .../rke2Scheduler/templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../charts/rke2Scheduler/values.yaml | 166 - .../charts/rkeControllerManager/.helmignore | 23 - .../charts/rkeControllerManager/Chart.yaml | 15 - .../charts/rkeControllerManager/README.md | 90 - .../templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../charts/rkeControllerManager/values.yaml | 166 - .../charts/rkeEtcd/.helmignore | 23 - .../charts/rkeEtcd/Chart.yaml | 15 - .../104.1.2+up57.0.3/charts/rkeEtcd/README.md | 90 - .../charts/rkeEtcd/templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../rkeEtcd/templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../rkeEtcd/templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../charts/rkeEtcd/values.yaml | 166 - .../charts/rkeIngressNginx/.helmignore | 23 - .../charts/rkeIngressNginx/Chart.yaml | 15 - .../charts/rkeIngressNginx/README.md | 90 - .../rkeIngressNginx/templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../charts/rkeIngressNginx/values.yaml | 166 - .../charts/rkeProxy/.helmignore | 23 - .../charts/rkeProxy/Chart.yaml | 15 - .../charts/rkeProxy/README.md | 90 - .../charts/rkeProxy/templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../rkeProxy/templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../rkeProxy/templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../charts/rkeProxy/values.yaml | 166 - .../charts/rkeScheduler/.helmignore | 23 - .../charts/rkeScheduler/Chart.yaml | 15 - .../charts/rkeScheduler/README.md | 90 - .../rkeScheduler/templates/_helpers.tpl | 170 - .../templates/pushprox-clients-rbac.yaml | 97 - .../templates/pushprox-clients.yaml | 157 - .../templates/pushprox-proxy-rbac.yaml | 68 - .../templates/pushprox-proxy.yaml | 57 - .../templates/pushprox-servicemonitor.yaml | 45 - .../templates/validate-install-crd.yaml | 14 - .../templates/validate-psp-install.yaml | 7 - .../charts/rkeScheduler/values.yaml | 166 - .../charts/windowsExporter/.helmignore | 21 - .../charts/windowsExporter/Chart.yaml | 17 - .../charts/windowsExporter/README.md | 42 - .../scripts/configure-firewall.ps1 | 31 - .../windowsExporter/templates/_helpers.tpl | 216 - .../windowsExporter/templates/config.yaml | 14 - .../windowsExporter/templates/daemonset.yaml | 200 - .../windowsExporter/templates/podmonitor.yaml | 91 - .../templates/scriptConfig.yaml | 14 - .../windowsExporter/templates/service.yaml | 32 - .../templates/serviceaccount.yaml | 17 - .../templates/servicemonitor.yaml | 75 - .../charts/windowsExporter/values.yaml | 366 -- .../104.1.2+up57.0.3/custom-values.yaml | 68 - .../files/ingress-nginx/nginx.json | 1445 ----- .../request-handling-performance.json | 963 --- .../cluster/rancher-cluster-nodes.json | 793 --- .../rancher/cluster/rancher-cluster.json | 776 --- .../files/rancher/fleet/bundle.json | 246 - .../files/rancher/fleet/bundledeployment.json | 219 - .../files/rancher/fleet/cluster.json | 484 -- .../files/rancher/fleet/clustergroup.json | 468 -- .../rancher/fleet/controller-runtime.json | 454 -- .../files/rancher/fleet/gitrepo.json | 325 - .../rancher/home/rancher-default-home.json | 1290 ---- .../files/rancher/k8s/rancher-etcd-nodes.json | 687 --- .../files/rancher/k8s/rancher-etcd.json | 669 -- .../k8s/rancher-k8s-components-nodes.json | 527 -- .../rancher/k8s/rancher-k8s-components.json | 519 -- .../rancher/nodes/rancher-node-detail.json | 805 --- .../files/rancher/nodes/rancher-node.json | 792 --- .../performance/performance-debugging.json | 1652 ----- .../rancher/pods/rancher-pod-containers.json | 636 -- .../files/rancher/pods/rancher-pod.json | 636 -- .../workloads/rancher-workload-pods.json | 652 -- .../rancher/workloads/rancher-workload.json | 652 -- .../delete-workloads-with-old-labels.sh | 14 - .../104.1.2+up57.0.3/templates/NOTES.txt | 4 - .../104.1.2+up57.0.3/templates/_helpers.tpl | 459 -- .../templates/alertmanager/alertmanager.yaml | 191 - .../templates/alertmanager/extrasecret.yaml | 20 - .../templates/alertmanager/ingress.yaml | 78 - .../alertmanager/ingressperreplica.yaml | 67 - .../alertmanager/podDisruptionBudget.yaml | 21 - .../templates/alertmanager/psp-role.yaml | 23 - .../alertmanager/psp-rolebinding.yaml | 20 - .../templates/alertmanager/psp.yaml | 47 - .../templates/alertmanager/secret.yaml | 35 - .../templates/alertmanager/service.yaml | 68 - .../alertmanager/serviceaccount.yaml | 21 - .../alertmanager/servicemonitor.yaml | 84 - .../alertmanager/serviceperreplica.yaml | 49 - .../templates/exporters/core-dns/service.yaml | 24 - .../exporters/core-dns/servicemonitor.yaml | 58 - .../kube-api-server/servicemonitor.yaml | 57 - .../kube-controller-manager/endpoints.yaml | 22 - .../kube-controller-manager/service.yaml | 29 - .../servicemonitor.yaml | 69 - .../templates/exporters/kube-dns/service.yaml | 28 - .../exporters/kube-dns/servicemonitor.yaml | 71 - .../exporters/kube-etcd/endpoints.yaml | 20 - .../exporters/kube-etcd/service.yaml | 27 - .../exporters/kube-etcd/servicemonitor.yaml | 75 - .../exporters/kube-proxy/endpoints.yaml | 20 - .../exporters/kube-proxy/service.yaml | 27 - .../exporters/kube-proxy/servicemonitor.yaml | 63 - .../exporters/kube-scheduler/endpoints.yaml | 22 - .../exporters/kube-scheduler/service.yaml | 29 - .../kube-scheduler/servicemonitor.yaml | 69 - .../kube-state-metrics/validate.yaml | 7 - .../exporters/kubelet/servicemonitor.yaml | 246 - .../exporters/node-exporter/validate.yaml | 3 - .../templates/extra-objects.yaml | 4 - .../grafana/configmap-dashboards.yaml | 24 - .../grafana/configmaps-datasources.yaml | 81 - .../alertmanager-overview.yaml | 616 -- .../grafana/dashboards-1.14/apiserver.yaml | 1772 ------ .../dashboards-1.14/cluster-total.yaml | 1882 ------ .../dashboards-1.14/controller-manager.yaml | 1196 ---- .../grafana/dashboards-1.14/etcd.yaml | 1229 ---- .../dashboards-1.14/grafana-overview.yaml | 635 -- .../grafana/dashboards-1.14/k8s-coredns.yaml | 1534 ----- .../k8s-resources-cluster.yaml | 3088 ---------- .../k8s-resources-multicluster.yaml | 24 - .../k8s-resources-namespace.yaml | 2797 --------- .../dashboards-1.14/k8s-resources-node.yaml | 1026 ---- .../dashboards-1.14/k8s-resources-pod.yaml | 2469 -------- .../k8s-resources-windows-cluster.yaml | 24 - .../k8s-resources-windows-namespace.yaml | 24 - .../k8s-resources-windows-pod.yaml | 24 - .../k8s-resources-workload.yaml | 2024 ------ .../k8s-resources-workloads-namespace.yaml | 2189 ------- .../k8s-windows-cluster-rsrc-use.yaml | 24 - .../k8s-windows-node-rsrc-use.yaml | 24 - .../grafana/dashboards-1.14/kubelet.yaml | 2256 ------- .../dashboards-1.14/namespace-by-pod.yaml | 1464 ----- .../namespace-by-workload.yaml | 1736 ------ .../node-cluster-rsrc-use.yaml | 1063 ---- .../dashboards-1.14/node-rsrc-use.yaml | 1089 ---- .../grafana/dashboards-1.14/nodes-darwin.yaml | 1073 ---- .../grafana/dashboards-1.14/nodes.yaml | 1066 ---- .../persistentvolumesusage.yaml | 587 -- .../grafana/dashboards-1.14/pod-total.yaml | 1228 ---- .../prometheus-remote-write.yaml | 1674 ----- .../grafana/dashboards-1.14/prometheus.yaml | 1235 ---- .../grafana/dashboards-1.14/proxy.yaml | 1276 ---- .../grafana/dashboards-1.14/scheduler.yaml | 1118 ---- .../dashboards-1.14/workload-total.yaml | 1438 ----- .../templates/grafana/namespaces.yaml | 13 - .../_prometheus-operator.tpl | 7 - .../_prometheus-operator-webhook.tpl | 6 - .../deployment/deployment.yaml | 143 - .../admission-webhooks/deployment/pdb.yaml | 15 - .../deployment/service.yaml | 58 - .../deployment/serviceaccount.yaml | 15 - .../ciliumnetworkpolicy-createSecret.yaml | 36 - .../ciliumnetworkpolicy-patchWebhook.yaml | 36 - .../job-patch/clusterrole.yaml | 33 - .../job-patch/clusterrolebinding.yaml | 20 - .../job-patch/job-createSecret.yaml | 73 - .../job-patch/job-patchWebhook.yaml | 74 - .../job-patch/networkpolicy-createSecret.yaml | 33 - .../job-patch/networkpolicy-patchWebhook.yaml | 33 - .../admission-webhooks/job-patch/psp.yaml | 47 - .../admission-webhooks/job-patch/role.yaml | 21 - .../job-patch/rolebinding.yaml | 21 - .../job-patch/serviceaccount.yaml | 17 - .../mutatingWebhookConfiguration.yaml | 77 - .../validatingWebhookConfiguration.yaml | 77 - .../prometheus-operator/certmanager.yaml | 55 - .../ciliumnetworkpolicy.yaml | 40 - .../prometheus-operator/clusterrole.yaml | 109 - .../clusterrolebinding.yaml | 16 - .../prometheus-operator/deployment.yaml | 204 - .../prometheus-operator/networkpolicy.yaml | 29 - .../prometheus-operator/psp-clusterrole.yaml | 21 - .../psp-clusterrolebinding.yaml | 18 - .../templates/prometheus-operator/psp.yaml | 46 - .../prometheus-operator/service.yaml | 57 - .../prometheus-operator/serviceaccount.yaml | 14 - .../prometheus-operator/servicemonitor.yaml | 57 - .../verticalpodautoscaler.yaml | 40 - .../templates/prometheus/_rules.tpl | 44 - .../additionalAlertRelabelConfigs.yaml | 16 - .../additionalAlertmanagerConfigs.yaml | 16 - .../prometheus/additionalPrometheusRules.yaml | 43 - .../prometheus/additionalScrapeConfigs.yaml | 20 - .../prometheus/ciliumnetworkpolicy.yaml | 27 - .../templates/prometheus/clusterrole.yaml | 30 - .../prometheus/clusterrolebinding.yaml | 18 - .../templates/prometheus/csi-secret.yaml | 12 - .../templates/prometheus/extrasecret.yaml | 20 - .../templates/prometheus/ingress.yaml | 77 - .../prometheus/ingressThanosSidecar.yaml | 77 - .../prometheus/ingressperreplica.yaml | 67 - .../templates/prometheus/networkpolicy.yaml | 34 - .../templates/prometheus/nginx-config.yaml | 68 - .../prometheus/podDisruptionBudget.yaml | 25 - .../templates/prometheus/podmonitors.yaml | 38 - .../templates/prometheus/prometheus.yaml | 472 -- .../templates/prometheus/psp-clusterrole.yaml | 22 - .../prometheus/psp-clusterrolebinding.yaml | 19 - .../templates/prometheus/psp.yaml | 58 - .../rules-1.14/alertmanager.rules.yaml | 305 - .../rules-1.14/config-reloaders.yaml | 57 - .../templates/prometheus/rules-1.14/etcd.yaml | 461 -- .../prometheus/rules-1.14/general.rules.yaml | 125 - ...les.container_cpu_usage_seconds_total.yaml | 43 - .../k8s.rules.container_memory_cache.yaml | 42 - .../k8s.rules.container_memory_rss.yaml | 42 - .../k8s.rules.container_memory_swap.yaml | 42 - ...es.container_memory_working_set_bytes.yaml | 42 - .../k8s.rules.container_resource.yaml | 168 - .../rules-1.14/k8s.rules.pod_owner.yaml | 107 - .../prometheus/rules-1.14/k8s.rules.yaml | 237 - .../kube-apiserver-availability.rules.yaml | 273 - .../kube-apiserver-burnrate.rules.yaml | 440 -- .../kube-apiserver-histogram.rules.yaml | 53 - .../rules-1.14/kube-apiserver-slos.yaml | 159 - .../kube-prometheus-general.rules.yaml | 49 - .../kube-prometheus-node-recording.rules.yaml | 93 - .../rules-1.14/kube-scheduler.rules.yaml | 135 - .../rules-1.14/kube-state-metrics.yaml | 152 - .../prometheus/rules-1.14/kubelet.rules.yaml | 65 - .../rules-1.14/kubernetes-apps.yaml | 568 -- .../rules-1.14/kubernetes-resources.yaml | 282 - .../rules-1.14/kubernetes-storage.yaml | 216 - .../kubernetes-system-apiserver.yaml | 193 - .../kubernetes-system-controller-manager.yaml | 55 - .../kubernetes-system-kube-proxy.yaml | 56 - .../rules-1.14/kubernetes-system-kubelet.yaml | 379 -- .../kubernetes-system-scheduler.yaml | 54 - .../rules-1.14/kubernetes-system.yaml | 87 - .../rules-1.14/node-exporter.rules.yaml | 188 - .../prometheus/rules-1.14/node-exporter.yaml | 801 --- .../prometheus/rules-1.14/node-network.yaml | 55 - .../prometheus/rules-1.14/node.rules.yaml | 109 - .../rules-1.14/prometheus-operator.yaml | 253 - .../prometheus/rules-1.14/prometheus.yaml | 707 --- .../rules-1.14/windows.node.rules.yaml | 301 - .../rules-1.14/windows.pod.rules.yaml | 158 - .../templates/prometheus/secret.yaml | 15 - .../templates/prometheus/service.yaml | 80 - .../prometheus/serviceThanosSidecar.yaml | 39 - .../serviceThanosSidecarExternal.yaml | 46 - .../templates/prometheus/serviceaccount.yaml | 21 - .../templates/prometheus/servicemonitor.yaml | 97 - .../servicemonitorThanosSidecar.yaml | 55 - .../templates/prometheus/servicemonitors.yaml | 47 - .../prometheus/serviceperreplica.yaml | 54 - .../rancher-monitoring/clusterrole.yaml | 135 - .../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/fleet-dashboards.yaml | 17 - .../dashboards/rancher/k8s-dashboards.yaml | 31 - .../dashboards/rancher/nodes-dashboards.yaml | 17 - .../rancher/performance-dashboards.yaml | 18 - .../dashboards/rancher/pods-dashboards.yaml | 17 - .../rancher/workload-dashboards.yaml | 17 - .../exporters/fleet/servicemonitor.yaml | 53 - .../exporters/ingress-nginx/service.yaml | 27 - .../ingress-nginx/servicemonitor.yaml | 49 - .../exporters/rancher/servicemonitor.yaml | 58 - .../rancher-monitoring/hardened.yaml | 147 - .../rancher-monitoring/upgrade/configmap.yaml | 13 - .../rancher-monitoring/upgrade/job.yaml | 46 - .../rancher-monitoring/upgrade/rbac.yaml | 131 - .../templates/thanos-ruler/extrasecret.yaml | 20 - .../templates/thanos-ruler/ingress.yaml | 77 - .../thanos-ruler/podDisruptionBudget.yaml | 21 - .../templates/thanos-ruler/ruler.yaml | 189 - .../templates/thanos-ruler/secret.yaml | 26 - .../templates/thanos-ruler/service.yaml | 53 - .../thanos-ruler/serviceaccount.yaml | 20 - .../thanos-ruler/servicemonitor.yaml | 82 - .../templates/validate-install-crd.yaml | 23 - .../templates/validate-psp-install.yaml | 7 - .../104.1.2+up57.0.3/values.yaml | 5431 ----------------- manifests/helm/unitycatalog/0.2.0/.helmignore | 24 - .../helm/unitycatalog/0.2.0/BUILD-README.md | 51 - .../helm/unitycatalog/0.2.0/CUSTOM-README.md | 177 - manifests/helm/unitycatalog/0.2.0/Chart.lock | 6 - manifests/helm/unitycatalog/0.2.0/Chart.yaml | 11 - .../0.2.0/charts/postgresql/.helmignore | 25 - .../0.2.0/charts/postgresql/Chart.lock | 6 - .../0.2.0/charts/postgresql/Chart.yaml | 37 - .../0.2.0/charts/postgresql/README.md | 1017 --- .../postgresql/charts/common/.helmignore | 26 - .../postgresql/charts/common/Chart.yaml | 23 - .../charts/postgresql/charts/common/README.md | 235 - .../charts/common/templates/_affinities.tpl | 139 - .../charts/common/templates/_capabilities.tpl | 229 - .../common/templates/_compatibility.tpl | 42 - .../charts/common/templates/_errors.tpl | 28 - .../charts/common/templates/_images.tpl | 109 - .../charts/common/templates/_ingress.tpl | 73 - .../charts/common/templates/_labels.tpl | 46 - .../charts/common/templates/_names.tpl | 71 - .../charts/common/templates/_resources.tpl | 50 - .../charts/common/templates/_secrets.tpl | 182 - .../charts/common/templates/_storage.tpl | 22 - .../charts/common/templates/_tplvalues.tpl | 38 - .../charts/common/templates/_utils.tpl | 77 - .../charts/common/templates/_warnings.tpl | 109 - .../templates/validations/_cassandra.tpl | 77 - .../common/templates/validations/_mariadb.tpl | 108 - .../common/templates/validations/_mongodb.tpl | 113 - .../common/templates/validations/_mysql.tpl | 108 - .../templates/validations/_postgresql.tpl | 134 - .../common/templates/validations/_redis.tpl | 81 - .../templates/validations/_validations.tpl | 51 - .../postgresql/charts/common/values.yaml | 8 - .../charts/postgresql/templates/NOTES.txt | 117 - .../charts/postgresql/templates/_helpers.tpl | 406 -- .../postgresql/templates/backup/cronjob.yaml | 138 - .../templates/backup/networkpolicy.yaml | 32 - .../postgresql/templates/backup/pvc.yaml | 34 - .../postgresql/templates/extra-list.yaml | 9 - .../templates/primary/configmap.yaml | 26 - .../templates/primary/extended-configmap.yaml | 20 - .../primary/initialization-configmap.yaml | 17 - .../templates/primary/metrics-configmap.yaml | 18 - .../templates/primary/metrics-svc.yaml | 31 - .../templates/primary/networkpolicy.yaml | 78 - .../postgresql/templates/primary/pdb.yaml | 29 - .../templates/primary/servicemonitor.yaml | 46 - .../templates/primary/statefulset.yaml | 686 --- .../templates/primary/svc-headless.yaml | 36 - .../postgresql/templates/primary/svc.yaml | 54 - .../postgresql/templates/prometheusrule.yaml | 22 - .../charts/postgresql/templates/psp.yaml | 42 - .../templates/read/extended-configmap.yaml | 20 - .../templates/read/metrics-configmap.yaml | 18 - .../templates/read/metrics-svc.yaml | 31 - .../templates/read/networkpolicy.yaml | 80 - .../charts/postgresql/templates/read/pdb.yaml | 29 - .../templates/read/servicemonitor.yaml | 46 - .../templates/read/statefulset.yaml | 579 -- .../templates/read/svc-headless.yaml | 38 - .../charts/postgresql/templates/read/svc.yaml | 56 - .../charts/postgresql/templates/role.yaml | 32 - .../postgresql/templates/rolebinding.yaml | 24 - .../charts/postgresql/templates/secrets.yaml | 99 - .../postgresql/templates/serviceaccount.yaml | 18 - .../postgresql/templates/tls-secrets.yaml | 30 - .../charts/postgresql/values.schema.json | 156 - .../0.2.0/charts/postgresql/values.yaml | 1761 ------ .../helm/unitycatalog/0.2.0/custom-value.yaml | 85 - .../unitycatalog/0.2.0/custom-values.yaml | 10 - .../unitycatalog/0.2.0/dip-questions.yaml | 42 - .../0.2.0/dip-resources-quotas.yaml | 59 - .../0.2.0/dip-volumes-quotas.yaml | 38 - .../unitycatalog/0.2.0/templates/_helpers.tpl | 114 - .../0.2.0/templates/server/Ingress.yaml | 61 - .../0.2.0/templates/server/_config.tpl | 41 - .../0.2.0/templates/server/configmap.yaml | 38 - .../0.2.0/templates/server/service.yaml | 15 - .../0.2.0/templates/server/statefulset.yaml | 273 - .../0.2.0/templates/serviceaccount.yaml | 13 - .../0.2.0/templates/ui/deployment.yaml | 136 - .../0.2.0/templates/ui/service.yaml | 17 - manifests/helm/unitycatalog/0.2.0/values.yaml | 230 - 766 files changed, 134257 deletions(-) delete mode 100644 manifests/helm/kong/2.46.0/BUILD-README.md delete mode 100644 manifests/helm/kong/2.46.0/CHANGELOG.md delete mode 100644 manifests/helm/kong/2.46.0/CUSTOM-README.md delete mode 100644 manifests/helm/kong/2.46.0/Chart.lock delete mode 100644 manifests/helm/kong/2.46.0/Chart.yaml delete mode 100644 manifests/helm/kong/2.46.0/FAQs.md delete mode 100644 manifests/helm/kong/2.46.0/README.md delete mode 100644 manifests/helm/kong/2.46.0/UPGRADE.md delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/.helmignore delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/Chart.lock delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/Chart.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/README.md delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/.helmignore delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/Chart.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/README.md delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_affinities.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_capabilities.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_errors.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_images.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_ingress.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_labels.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_names.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_secrets.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_storage.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_tplvalues.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_utils.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_warnings.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_cassandra.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_mariadb.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_mongodb.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_mysql.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_postgresql.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_redis.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_validations.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/charts/common/values.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/NOTES.txt delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/_helpers.tpl delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/extra-list.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/networkpolicy-egress.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/configmap.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/extended-configmap.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/initialization-configmap.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/metrics-configmap.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/metrics-svc.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/networkpolicy.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/servicemonitor.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/statefulset.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/svc-headless.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/svc.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/prometheusrule.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/psp.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/read/extended-configmap.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/read/metrics-configmap.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/read/metrics-svc.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/read/networkpolicy.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/read/servicemonitor.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/read/statefulset.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/read/svc-headless.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/read/svc.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/role.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/rolebinding.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/secrets.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/serviceaccount.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/templates/tls-secrets.yaml delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/values.schema.json delete mode 100644 manifests/helm/kong/2.46.0/charts/postgresql/values.yaml delete mode 100644 manifests/helm/kong/2.46.0/crds/custom-resource-definitions.yaml delete mode 100644 manifests/helm/kong/2.46.0/custom-values.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/NOTES.txt delete mode 100644 manifests/helm/kong/2.46.0/templates/_helpers.tpl delete mode 100644 manifests/helm/kong/2.46.0/templates/admission-webhook.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/certificate.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/config-dbless.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/controller-rbac-resources.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/controller-service-metrics.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/custom-resource-definitions.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/deployment.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/extraManifests.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/hpa.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/ingress-class.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/migrations-post-upgrade.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/migrations-pre-upgrade.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/migrations.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/pdb.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/psp.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/secret-sa-token.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/service-account.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/service-kong-admin.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/service-kong-cluster-telemetry.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/service-kong-cluster.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/service-kong-manager.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/service-kong-portal-api.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/service-kong-portal.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/service-kong-proxy.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/service-kong-udp-proxy.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/servicemonitor.yaml delete mode 100644 manifests/helm/kong/2.46.0/templates/wait-for-postgres-script.yaml delete mode 100644 manifests/helm/kong/2.46.0/values.yaml delete mode 100644 manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/BUILD-README.md delete mode 100644 manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/CUSTOM-README.md delete mode 100644 manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/README.md delete mode 100644 manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/custom-values.yaml delete mode 100644 manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/files/crd-manifest.tgz delete mode 100644 manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/jobs.yaml delete mode 100644 manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/manifest.yaml delete mode 100644 manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/BUILD-README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/CHANGELOG.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/CONTRIBUTING.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/CUSTOM-README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/app-README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/dashboards/custom-dashboard.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/NOTES.txt delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/_config.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/_pod.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/clusterrole.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/clusterrolebinding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/configSecret.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/configmap-dashboard-provider.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/configmap.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/dashboards-json-configmap.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/deployment.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/extra-manifests.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/headless-service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/hpa.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-deployment.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-hpa.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-network-policy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/ingress.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/networkpolicy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/nginx-config.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/poddisruptionbudget.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/podsecuritypolicy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/pvc.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/role.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/rolebinding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/secret-env.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/secret.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/serviceaccount.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/statefulset.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-configmap.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-podsecuritypolicy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-role.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-rolebinding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-serviceaccount.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/NOTES.txt delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/ciliumnetworkpolicy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/clusterrolebinding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/crs-configmap.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/deployment.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/extra-manifests.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/kubeconfig-secret.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/networkpolicy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/pdb.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/podsecuritypolicy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/psp-clusterrole.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/psp-clusterrolebinding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/rbac-configmap.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/role.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/rolebinding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/serviceaccount.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/stsdiscovery-role.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/stsdiscovery-rolebinding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/verticalpodautoscaler.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/NOTES.txt delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/certmanager.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/cluster-role-binding-auth-delegator.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/cluster-role-binding-resource-reader.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/cluster-role-resource-reader.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/configmap.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/custom-metrics-apiservice.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/custom-metrics-cluster-role-binding-hpa.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/custom-metrics-cluster-role.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/deployment.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/external-metrics-apiservice.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/external-metrics-cluster-role-binding-hpa.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/external-metrics-cluster-role.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/pdb.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/psp.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/resource-metrics-apiservice.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/resource-metrics-cluster-role-binding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/resource-metrics-cluster-role.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/role-binding-auth-reader.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/secret.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/serviceaccount.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/NOTES.txt delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/clusterrole.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/clusterrolebinding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/daemonset.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/endpoints.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/extra-manifests.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/networkpolicy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/podmonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/psp.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/rbac-configmap.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/serviceaccount.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/verticalpodautoscaler.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-clients-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-clients.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-proxy-rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/.helmignore delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/Chart.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/README.md delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/scripts/configure-firewall.ps1 delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/config.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/daemonset.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/podmonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/scriptConfig.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/serviceaccount.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/custom-values.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/ingress-nginx/nginx.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/ingress-nginx/request-handling-performance.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/cluster/rancher-cluster-nodes.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/cluster/rancher-cluster.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/bundle.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/bundledeployment.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/cluster.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/clustergroup.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/controller-runtime.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/gitrepo.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/home/rancher-default-home.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/k8s/rancher-etcd-nodes.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/k8s/rancher-etcd.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/k8s/rancher-k8s-components-nodes.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/k8s/rancher-k8s-components.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/nodes/rancher-node-detail.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/nodes/rancher-node.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/performance/performance-debugging.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/pods/rancher-pod-containers.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/pods/rancher-pod.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/workloads/rancher-workload-pods.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/workloads/rancher-workload.json delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/upgrade/scripts/delete-workloads-with-old-labels.sh delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/NOTES.txt delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/_helpers.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/alertmanager.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/extrasecret.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/ingress.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/ingressperreplica.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/podDisruptionBudget.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/psp-role.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/psp-rolebinding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/psp.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/secret.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/serviceaccount.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/serviceperreplica.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/core-dns/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/core-dns/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-api-server/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-controller-manager/endpoints.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-controller-manager/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-controller-manager/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-dns/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-dns/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-etcd/endpoints.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-etcd/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-etcd/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-proxy/endpoints.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-proxy/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-proxy/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-scheduler/endpoints.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-scheduler/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-scheduler/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-state-metrics/validate.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kubelet/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/node-exporter/validate.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/extra-objects.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/configmap-dashboards.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/configmaps-datasources.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/alertmanager-overview.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/apiserver.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/cluster-total.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/controller-manager.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/etcd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/grafana-overview.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-coredns.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-multicluster.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-node.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-windows-cluster.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-windows-namespace.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-windows-pod.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-workload.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-workloads-namespace.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-windows-cluster-rsrc-use.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-windows-node-rsrc-use.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/kubelet.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/namespace-by-pod.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/namespace-by-workload.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/node-cluster-rsrc-use.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/node-rsrc-use.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/nodes-darwin.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/nodes.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/persistentvolumesusage.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/pod-total.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/prometheus.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/scheduler.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/workload-total.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/namespaces.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/_prometheus-operator.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/_prometheus-operator-webhook.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/deployment/deployment.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/deployment/pdb.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/deployment/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/deployment/serviceaccount.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/ciliumnetworkpolicy-createSecret.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/ciliumnetworkpolicy-patchWebhook.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/networkpolicy-createSecret.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/networkpolicy-patchWebhook.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/certmanager.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/ciliumnetworkpolicy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/clusterrole.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/clusterrolebinding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/deployment.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/networkpolicy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/psp-clusterrole.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/psp-clusterrolebinding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/psp.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/serviceaccount.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/verticalpodautoscaler.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/_rules.tpl delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/additionalAlertRelabelConfigs.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/additionalAlertmanagerConfigs.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/additionalPrometheusRules.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/additionalScrapeConfigs.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/ciliumnetworkpolicy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/clusterrole.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/clusterrolebinding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/csi-secret.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/extrasecret.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/ingress.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/ingressThanosSidecar.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/ingressperreplica.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/networkpolicy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/nginx-config.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/podDisruptionBudget.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/podmonitors.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/prometheus.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/psp-clusterrole.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/psp-clusterrolebinding.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/psp.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/alertmanager.rules.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/config-reloaders.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/etcd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/general.rules.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_cpu_usage_seconds_total.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_memory_cache.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_memory_rss.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_memory_swap.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_memory_working_set_bytes.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_resource.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.pod_owner.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-apiserver-burnrate.rules.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-apiserver-histogram.rules.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-state-metrics.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubelet.rules.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-apps.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-resources.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-storage.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-kube-proxy.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/node-exporter.rules.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/node-exporter.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/node-network.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/node.rules.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/prometheus-operator.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/prometheus.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/windows.node.rules.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/windows.pod.rules.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/secret.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/serviceThanosSidecar.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/serviceThanosSidecarExternal.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/serviceaccount.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/servicemonitorThanosSidecar.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/servicemonitors.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/serviceperreplica.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/clusterrole.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/config-role.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboard-role.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/addons/ingress-nginx-dashboard.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/cluster-dashboards.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/default-dashboard.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/fleet-dashboards.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/k8s-dashboards.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/nodes-dashboards.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/performance-dashboards.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/pods-dashboards.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/workload-dashboards.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/exporters/fleet/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/exporters/ingress-nginx/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/exporters/ingress-nginx/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/exporters/rancher/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/hardened.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/upgrade/configmap.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/upgrade/job.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/upgrade/rbac.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/extrasecret.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/ingress.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/podDisruptionBudget.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/ruler.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/secret.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/service.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/serviceaccount.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/servicemonitor.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/validate-install-crd.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/validate-psp-install.yaml delete mode 100644 manifests/helm/rancher-monitoring/104.1.2+up57.0.3/values.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/.helmignore delete mode 100644 manifests/helm/unitycatalog/0.2.0/BUILD-README.md delete mode 100644 manifests/helm/unitycatalog/0.2.0/CUSTOM-README.md delete mode 100644 manifests/helm/unitycatalog/0.2.0/Chart.lock delete mode 100644 manifests/helm/unitycatalog/0.2.0/Chart.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/.helmignore delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/Chart.lock delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/Chart.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/README.md delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/.helmignore delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/Chart.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/README.md delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/_affinities.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/_capabilities.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/_compatibility.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/_errors.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/_images.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/_ingress.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/_labels.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/_names.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/_resources.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/_secrets.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/_storage.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/_tplvalues.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/_utils.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/_warnings.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/validations/_cassandra.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/validations/_mariadb.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/validations/_mongodb.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/validations/_mysql.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/validations/_postgresql.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/validations/_redis.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/templates/validations/_validations.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/charts/common/values.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/NOTES.txt delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/_helpers.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/backup/cronjob.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/backup/networkpolicy.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/backup/pvc.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/extra-list.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/primary/configmap.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/primary/extended-configmap.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/primary/initialization-configmap.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/primary/metrics-configmap.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/primary/metrics-svc.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/primary/networkpolicy.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/primary/pdb.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/primary/servicemonitor.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/primary/statefulset.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/primary/svc-headless.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/primary/svc.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/prometheusrule.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/psp.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/read/extended-configmap.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/read/metrics-configmap.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/read/metrics-svc.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/read/networkpolicy.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/read/pdb.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/read/servicemonitor.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/read/statefulset.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/read/svc-headless.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/read/svc.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/role.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/rolebinding.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/secrets.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/serviceaccount.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/templates/tls-secrets.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/values.schema.json delete mode 100644 manifests/helm/unitycatalog/0.2.0/charts/postgresql/values.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/custom-value.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/custom-values.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/dip-questions.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/dip-resources-quotas.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/dip-volumes-quotas.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/templates/_helpers.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/templates/server/Ingress.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/templates/server/_config.tpl delete mode 100644 manifests/helm/unitycatalog/0.2.0/templates/server/configmap.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/templates/server/service.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/templates/server/statefulset.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/templates/serviceaccount.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/templates/ui/deployment.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/templates/ui/service.yaml delete mode 100644 manifests/helm/unitycatalog/0.2.0/values.yaml diff --git a/doc/change-bitnami-image.md b/doc/change-bitnami-image.md index 51d3b5a..b18ffe2 100644 --- a/doc/change-bitnami-image.md +++ b/doc/change-bitnami-image.md @@ -60,18 +60,6 @@ postgresql: repository: bitnamilegacy/postgres-exporter ``` -## 4. kong -** bitnami 사용 컴포넌트 ** -| 컴포넌트 | 사용 이미지 | 변경해야 할 이미지 | -|----------|-------|-------| -| **PostgreSQL** | bitnami/postgresql | bitnamilegacy/postgresql | - -``` yaml -postgresql: - image: - repository: bitnamilegacy/postgresql -``` - ## 5. langflow-ide ** bitnami 사용 컴포넌트 ** | 컴포넌트 | 사용 이미지 | 변경해야 할 이미지 | @@ -215,16 +203,3 @@ redis: repository: bitnamilegacy/redis ``` - -## 11. unity catalog - -** bitnami 사용 컴포넌트 ** -| 컴포넌트 | 사용 이미지 | 변경해야 할 이미지 | -|----------|-------|-------| -| **PostgreSQL** | bitnami/postgresql | bitnamilegacy/postgresql | - -``` yaml -postgresql: - image: - repository: bitnamilegacy/postgresql -``` \ No newline at end of file diff --git a/doc/define-chart-resources.md b/doc/define-chart-resources.md index 7943a32..0a6cc7c 100644 --- a/doc/define-chart-resources.md +++ b/doc/define-chart-resources.md @@ -520,60 +520,6 @@ postgresql: --- -## 11. kong -**API 게이트웨이** - -| 컴포넌트 | Small | Medium | Large | -|----------|-------|--------|-------| -| **Kong Proxy** | 500m/1Gi → 1000m/2Gi | 1000m/2Gi → 2000m/4Gi | 2000m/4Gi → 4000m/8Gi | -| **Kong Ingress Controller** | 200m/256Mi → 500m/512Mi | 500m/512Mi → 1000m/1Gi | 1000m/1Gi → 2000m/2Gi | -| **PostgreSQL** | 250m/512Mi → 500m/1Gi | 500m/1Gi → 1000m/2Gi | 1000m/2Gi → 2000m/4Gi | - -**볼륨 사이즈 권장사항:** -| 컴포넌트 | Small | Medium | Large | -|----------|-------|--------|-------| -| **PostgreSQL Data** | 5Gi | 20Gi | 100Gi | - -**권장 사용 시나리오:** -- Small: 소규모 API (< 10 서비스) -- Medium: 중간 규모 API (10-50 서비스) -- Large: 대규모 마이크로서비스 (50+ 서비스) - -**custom-values.yaml 설정** -``` yaml - -# proxy 서버 자원 설정(initContainer도 설정을 공유) -resources: {} - # limits: - # cpu: 1 - # memory: 2G - # requests: - # cpu: 1 - # memory: 2G - -ingressController: - resources: {} - # Example reasonable setting for "resources": - # resources: - # limits: - # cpu: 100m - # memory: 256Mi - # requests: - # cpu: 50m - # memory: 128Mi - -postgresql: - resources: {} - # limits: - # memory: 512Mi - # cpu: 500m - # requests: - # memory: 256Mi - # cpu: 250m -``` - ---- - ## 12. kserve **ML 모델 서빙** @@ -1437,97 +1383,6 @@ resources: --- -## 28. rancher-monitoring -**Rancher 모니터링 스택 - Prometheus Operator 기반 모니터링** - -| 컴포넌트 | Small | Medium | Large | -|----------|-------|--------|-------| -| **Prometheus** | 250m/100Mi → 1000m/2Gi | 500m/1Gi → 2000m/4Gi | 1000m/2Gi → 4000m/8Gi | -| **Grafana** | 100m/100Mi → 200m/200Mi | 200m/200Mi → 500m/1Gi | 500m/1Gi → 1000m/2Gi | -| **AlertManager** | 100m/100Mi → 1000m/500Mi | 200m/200Mi → 1500m/1Gi | 500m/500Mi → 2000m/2Gi | -| **Prometheus Operator** | 100m/128Mi → 200m/256Mi | 200m/256Mi → 500m/512Mi | 500m/512Mi → 1000m/1Gi | -| **Node Exporter** | 50m/64Mi → 100m/128Mi | 100m/128Mi → 200m/256Mi | 200m/256Mi → 500m/512Mi | -| **Kube State Metrics** | 100m/128Mi → 200m/256Mi | 200m/256Mi → 500m/512Mi | 500m/512Mi → 1000m/1Gi | - -**볼륨 사이즈 권장사항:** -| 컴포넌트 | Small | Medium | Large | -|----------|-------|--------|-------| -| **Prometheus Storage** | 10Gi | 50Gi | 200Gi | -| **Grafana Storage** | 1Gi | 5Gi | 20Gi | -| **AlertManager Storage** | 1Gi | 5Gi | 20Gi | - -**권장 사용 시나리오:** -- Small: 소규모 클러스터 (< 10 노드, 기본 모니터링) -- Medium: 중간 규모 클러스터 (10-50 노드, 상세 모니터링) -- Large: 대규모 클러스터 (50+ 노드, 멀티 클러스터 모니터링) - -**custom-values.yaml 설정** -```yaml -grafana: - resources: - requests: - cpu: 100m - memory: 100Mi - limits: - cpu: 200m - memory: 200Mi - -prometheusOperator: - resources: {} - -prometheus: - prometheusSpec: - resources: - requests: - cpu: 250m - memory: 100Mi - limits: - cpu: 1000m - memory: 2000Mi - # 메트릭 수집 주기 - scrapeInterval: 1m - # 알림 평가 주기 - evaluationInterval: 1m - # 메트릭 보관 기간 - retention: 30d - # 메트릭 보관 용량 (볼륨 크기보다 작게 설정) - retentionSize: 10GB - # Prometheus 데이터 저장소 설정 - storageSpec: - volumeClaimTemplate: - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi - storageClassName: longhorn - volumeMode: Filesystem - -alertmanager: - alertmanagerSpec: - resources: - requests: - cpu: 100m - memory: 100Mi - limits: - cpu: 1000m - memory: 500Mi - -nodeExporter: - resources: {} - -kube-state-metrics: - resources: {} -``` - ---- - -## 29. rancher-monitoring-crd : crd만 배포 -**Rancher 모니터링 CRD** - ---- - ## 30. spark-operator **Apache Spark Operator - Kubernetes에서 Spark 애플리케이션 관리** @@ -1820,45 +1675,6 @@ redis: --- -## 35. unitycatalog : 사용 여부 검토 필요 -**데이터 카탈로그** - -| 컴포넌트 | Small | Medium | Large | -|----------|-------|--------|-------| -| **Catalog Server** | 1000m/2Gi → 2000m/4Gi | 2000m/4Gi → 4000m/8Gi | 4000m/8Gi → 8000m/16Gi | -| **Postgresql** | 500m/1Gi → 1000m/2Gi | 1000m/2Gi → 2000m/4Gi | 2000m/4Gi → 4000m/8Gi | - -**볼륨 사이즈 권장사항:** -| 컴포넌트 | Small | Medium | Large | -|----------|-------|--------|-------| -| **Catalog Metadata** | 10Gi | 100Gi | 1Ti | -| **Database Data** | 20Gi | 200Gi | 2Ti | - -**권장 사용 시나리오:** -- Small: 소규모 데이터 자산 관리 -- Medium: 중간 규모 데이터 거버넌스 -- Large: 엔터프라이즈 데이터 카탈로그 - -**custom-values.yaml 설정** -``` yaml -server: - config: - persistence: - enabled: true - accessModes: [ "ReadWriteOnce" ] - size: 100Mi - storageClassName: "longhorn" - statefulset: - resources: {} -postgresql: - primary: - persistence: - storageClassName: "longhorn" - size: 5Gi - resources: {} -``` ---- - ## 36. vllm **고성능 LLM 추론** @@ -2050,7 +1866,6 @@ metadata: | flowise | AI 워크플로우 | Medium | 30-150Gi | | gitea | Git 서버 | Medium | 130-650Gi | | keycloak | 인증 서버 | Medium | 22-105Gi | -| kong | API 게이트웨이 | Medium | 22-105Gi | | langflow-ide | AI IDE | Medium | 80-350Gi | | langfuse | LLM 추적 | Medium | 100-700Gi | | litellm | LLM 프록시 | Medium | 30-150Gi | @@ -2065,10 +1880,8 @@ metadata: | kafka | 스트리밍 플랫폼 | Large | 1.3Ti | | postgresql-ha | 고가용성 DB | Medium-Large | 1.2Ti | | starrocks | 분석 데이터베이스 | Large | 11Ti | -| rancher-monitoring | 모니터링 스택 | Large | 1.15Ti | | qdrant | 벡터 데이터베이스 | Medium-Large | 1.5Ti | | ragflow | RAG 시스템 | Medium-Large | 1.72Ti | -| unitycatalog | 데이터 카탈로그 | Large | 3Ti | #### AI/ML 특화 서비스 (GPU 필요) | 차트 | 주요 용도 | GPU 요구사항 | 볼륨 요구사항 | diff --git a/manifests/helm/kong/2.46.0/BUILD-README.md b/manifests/helm/kong/2.46.0/BUILD-README.md deleted file mode 100644 index 986a735..0000000 --- a/manifests/helm/kong/2.46.0/BUILD-README.md +++ /dev/null @@ -1,79 +0,0 @@ -# kong 버전 갱신 가이드 - -## 1. git 작업 환경 구성 - -- DIP 카탈로그 git 다운로드 -``` -$ git clone https://github.com/paasup/dip-catalog.git -``` - -- 작업 브랜치로 체크아웃 -``` -$ git checkout -b update-kong/2.46.0 -``` - -## 2. helm 차트 버전 업데이트 - -- BUILD-README.md, CUSTOM-README.md, custom-values.yaml을 제외한 파일 삭제 - ``` sh - # chart 디렉토리로 이동 - cd ~/dip-catalog/charts/kong - - # 파일 삭제 전 삭제할 파일 목록 확인 - find . -mindepth 1 \( -name "CUSTOM-README.md" -o -name "BUILD-README.md" -o -name "custom-values.yaml" \) -prune -o -print - - # 파일 삭제 - find . -mindepth 1 \(-name "CUSTOM-README.md" -o -name "BUILD-README.md" -o -name "custom-values.yaml" \) -prune -o -exec rm -rf {} + - ``` - -- kong 차트 다운로드 - ``` sh - # charts 디렉토리로 이동 - cd ~/dip-catalog/charts - - # helm repo 추가 - helm repo add kong https://charts.konghq.com - helm repo update - - # helm 차트 - helm pull kong/kong --version="2.46.0" - - # 차트 변경 - tar xzvf kong-*.tgz - - # 필요 없는 파일 삭제 - rm kong-*.tgz - ``` - -## 3. git push 및 tag 추가 -- 갱신작업 진행후 commit -```sh -$ git add . -$ git commit -m "update kong/2.46.0" -``` - -- main 브랜치에 체크아웃 후 merge -```sh -$ git checkout main -$ git merge update-kong/2.46.0 -``` - -- git에 push 후 작업 브랜치 삭제 -```sh -$ git push -u origin main -$ git branch -d update-kong/2.46.0 -``` - -- git tag 추가 후 push -```sh -$ git tag kong/2.46.0 -$ git push origin kong/2.46.0 -``` - -## 4. 차트 버전 정보 -- kong/2.46.0 - - 서비스 배포를 위하여 custom-values.yam에 정의하였다. - - 차트의 빌드 방법과 배포 방법을 BUILD-README.md, CUSTOM-README.md 문서에 작성하였다. - -## 참고) 커스텀 이미지 빌드 방법 -- https://github.com/paasup/dataup/tree/main/experiment/kong-plugin \ No newline at end of file diff --git a/manifests/helm/kong/2.46.0/CHANGELOG.md b/manifests/helm/kong/2.46.0/CHANGELOG.md deleted file mode 100644 index bd60f95..0000000 --- a/manifests/helm/kong/2.46.0/CHANGELOG.md +++ /dev/null @@ -1,2003 +0,0 @@ -# Changelog - -## 2.46.0 - -### Changes - -* Bumped default `kong/kubernetes-ingress-controller` image tag to 3.4. - [#1200](https://github.com/Kong/charts/pull/1200) - -## 2.45.0 - -### Changes - -* Bump default `kong` image tag to 3.8. - [#1192](https://github.com/Kong/charts/pull/1192) - -## 2.44.1 - -### Fixes - -* Added missing RBAC policy rules for `BackendTLSPolicy` and `ConfigMap`s - [#1191](https://github.com/Kong/charts/pull/1191) - -## 2.44.0 - -### Fixes - -* Added admission webhook `objectSelector` for: - * `secrets.credentials.validation.ingress-controller.konghq.com` - * and `secrets.plugins.validation.ingress-controller.konghq.com` - to not validate Konnect (`konnect`) credentials in `Secret`s which are reconciled by KGO. - [#1186](https://github.com/Kong/charts/pull/1186) - -## 2.43.0 - -### Changes - -* Added `serviceMonitor.trustCRDsExist` for render based deployments - [#1077](https://github.com/Kong/charts/pull/1077) -* Add `migrations.ttlSecondsAfterFinished` option to chart - [#1174](https://github.com/Kong/charts/pull/1174) -* Explicitly cert-manager group on Certificate. - [#1128](https://github.com/Kong/charts/pull/1128) -* Add missing load balancer service values. - [#1116](https://github.com/Kong/charts/pull/1116) -* Enables KIC metrics to be scraped by adding in a service to correctly work with the defined ServiceMonitor. - [#1134](https://github.com/Kong/charts/pull/1134) - -## 2.42.0 - -### Fixes - -* Fixed handling version labels `app.kubernetes.io/version` and `version` so that - they are not based on `Chart.yaml`'s version but on the version set in `values.yaml`. - [#1132](https://github.com/Kong/charts/pull/1132) - -### Changes - -* Bumped default `kong` image tag to 3.7. - [#1131](https://github.com/Kong/charts/pull/1131) -* Add new admission webhook configuration fields: - * `matchPolicy` - * `matchConditions` and - * `objectSelector` - [#1133](https://github.com/Kong/charts/pull/1133) - -## 2.41.1 - -### Changes - -* Deleted an unnecessary conditional statement for `ingressController.konnect.controlPlaneID`. - [#1126](https://github.com/Kong/charts/pull/1126) - -## 2.41.0 - -### Changes - -* Bumped default `kong/kubernetes-ingress-controller` image tag to 3.3. - [#1121](https://github.com/Kong/charts/pull/1121) - -## 2.40.0 - -* Add `deployment.revisionHistoryLimit` to set how many old `ReplicaSet`s you want to retain. - -### Changes -* Added support for ServiceMonitor relabelings allowing labels manipulation before scraping. - [#1095](https://github.com/Kong/charts/pull/1095) - -### Fixed -* Populate `KONG_ADMIN_GUI_SESSION_CONF` even if `enterprise.rbac.admin_gui_auth` is set to `openid-connect` - for Kong versions < 3.6.0. - [#1101](https://github.com/Kong/charts/pull/1101) - -### Breaking changes - -* Added `ingressController.konnect.controlPlaneID` and deprecated `ingressController.konnect.runtimeGroupID` - [#1099](https://github.com/Kong/charts/pull/1099) - -## 2.39.3 - -### Fixed - -* `KONG_ADMIN_GUI_SESSION_CONF` is not populated only when `enterprise.rbac.admin_gui_auth` - is set to `openid-connect`. The default value of `enterprise.rbac.session_conf_secret` is - restored to `kong-session-config` to avoid breaking changes. - [#1093](https://github.com/Kong/charts/pull/1093) - -## 2.39.2 - -### Fixed - -* Fixes `KongLicense` policy rules for Ingress controller when using `watchNamespaces` - [#1084](https://github.com/Kong/charts/pull/1084) - -## 2.39.1 - -### Fixed - -* Added missing `KongCustomEntity` CRD for KIC 3.2. - -## 2.39.0 - -### Changes - -* Updated handling of `session_conf_secret` to accommodate Kong 3.6. - It can now be omitted [when using OIDC](https://docs.konghq.com/gateway/3.6.x/kong-manager/auth/oidc/migrate/). - [#1033](https://github.com/Kong/charts/pull/1033) -* Setting a Service's `servicePort` to 0 now disables that port on the Service, - for use when the external Service and container listens should differ, such - as when terminating TLS at a LoadBalancer. - [#1021](https://github.com/Kong/charts/pull/1021) -* Added an `ingressController.admissionWebhook.filterSecrets` option. When - enabled, the webhook will only validate Secrets that have one of the - recognized KIC labels: - - * `konghq.com/credential: <"key-auth", "jwt", etc. credential types>` - * `konghq.com/validate: <"plugin", "custom">` - - Earlier versions checked all Secrets and did not require labels, interfering - with non-KIC labels. Requires KIC 3.0+. - [#1061](https://github.com/Kong/charts/pull/1061) -* Add RBAC policy rules for Custom Entities - [#1081](https://github.com/Kong/charts/pull/1081) -* Bumped default `kong/kubernetes-ingress-controller` image tag to 3.2. - [#1085](https://github.com/Kong/charts/pull/1085) - -## 2.38.0 - -### Changes - -* Added support for setting `SVC.tls.appProtocol` and `SVC.http.appProtocol` values to configure the appProtocol fields - for Kubernetes Service HTTP and TLS ports. It might be useful for integration with external load balancers like GCP. - [#1018](https://github.com/Kong/charts/pull/1018) - -## 2.37.1 - -* Rename the controller status port. This fixes a collision with the proxy status port in the Prometheus ServiceMonitor. - [#1008](https://github.com/Kong/charts/pull/1008) - -## 2.37.0 - -### Changes - -* Bumped default `kong/kubernetes-ingress-controller` image tag and updated CRDs to 3.1. - [#1011](https://github.com/Kong/charts/pull/1011) -* Bumped default `kong` image tag to 3.6. - [#1011](https://github.com/Kong/charts/pull/1011) - -## 2.36.0 - -### Fixed - -* Add `KongLicense` RBAC rules. - [#1006](https://github.com/Kong/charts/pull/1006) - -## 2.35.1 - -### Fixed - -* The plugin helper no longer sets the plugin list when not in use. - [#1002](https://github.com/Kong/charts/pull/1002) - -## 2.35.0 - -### Added - -* Added controller's RBAC rules for `KongVault` CRD (installed only when KIC - version >= 3.1.0). - [#992](https://github.com/Kong/charts/pull/992) - -### Fixed - -* Added a missing `envFrom` render in the main Kong proxy container. - [#994](https://github.com/Kong/charts/pull/994) - -## 2.34.0 - -### Added - -* The `envFrom` and `ingressController.envFrom` values.yaml keys now populate - the container field of the same name. This loads environment variables from - ConfigMap or Secret resource keys in bulk: - https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables - [#987](https://github.com/Kong/charts/pull/987) -* Kong listens now use both IPv4 and IPv6 addresses. - [#986](https://github.com/Kong/charts/pull/986) - -## 2.33.3 - -### Fixed - -* Add RBAC rules for get, list and watch operations on namespaces so that Gateway API - controllers in KIC can access using a cached controller-runtime client. - [#974](https://github.com/Kong/charts/pull/974) - -## 2.33.2 - -### Fixed - -* Fix a template bug related to the `affinity` field for migrations Pods. - [#972](https://github.com/Kong/charts/pull/972) - -## 2.33.1 - -### Fixed - -* Use changed `incubator.ingress-controller.konghq.com` API group name in `KongServiceFacade` - RBAC rules. Refer to [KIC#5302](https://github.com/Kong/kubernetes-ingress-controller/pull/5302) - for rename reasoning. - [#968](https://github.com/Kong/charts/pull/968) - -## 2.33.0 - -### Improvements - -* Only allow `None` ClusterIPs on ClusterIP-type Services. - [#961](https://github.com/Kong/charts/pull/961) - [#962](https://github.com/Kong/charts/pull/962) -* Bumped Kong version to 3.5. - [#957](https://github.com/Kong/charts/pull/957) -* Support for `affinity` configuration has been added to migration job templates. -* Display a warning message when Kong Manager is enabled and the Admin API is disabled. -* Validate Gateway API's `Gateway` and `HTTPRoute` resources in the controller's - admission webhook only when KIC version is 3.0 or higher. - [#954](https://github.com/Kong/charts/pull/954) -* Added controller's RBAC rules for `KongServiceFacade` CRD (installed only when - KongServiceFacade feature gate turned on and KIC version >= 3.1.0). - [#963](https://github.com/Kong/charts/pull/963) - -## 2.32.0 - -### Improvements - -* Add new `deployment.hostname` value to make identifying instances in - controlplane/dataplane configurations easier. - [#943](https://github.com/Kong/charts/pull/943) - -## 2.31.0 - -### Improvements - -* Added controller's RBAC rules for `KongUpstreamPolicy` CRD. - [#917](https://github.com/Kong/charts/pull/917) -* Added services resource to admission webhook config for KIC >= 3.0.0. - [#919](https://github.com/Kong/charts/pull/919) -* Update default ingress controller version to v3.0 - [#929](https://github.com/Kong/charts/pull/929) - [#930](https://github.com/Kong/charts/pull/930) - -### Fixed - -* The target port for cmetrics should only be applied if the ingress controller is enabled. - [#926](https://github.com/Kong/charts/pull/926) -* Fix RBAC for Gateway API v1. - [#928](https://github.com/Kong/charts/pull/928) -* Enable Admission webhook for Gateway API v1 resources. - [#928](https://github.com/Kong/charts/pull/928) - -## 2.30.0 - -### Improvements - -* Prevent installing PodDisruptionBudget for `replicaCount: 1` or `autoscaling.minReplicas: 1`. - [#896](https://github.com/Kong/charts/pull/896) -* The admission webhook now will be triggered on Secrets creation for KIC 2.12.1+. - [#907](https://github.com/Kong/charts/pull/907) -* Container security context defaults now comply with the restricted pod - security standard. This includes an enforced run as user ID set to 1000. UID - 1000 is used for official Kong images other than Alpine images (which use UID - 100) and for KIC images 3.0.0+ (older images use UID 65532). Images that do - not use UID 1000 can still run with this user, as static image files are - world-accessible and runtime-created files are created in temporary - directories created for the run as user. - [#911](https://github.com/Kong/charts/pull/911) -* Allow using templates (via `tpl`) when specifying `proxy.nameOverride`. - [#914](https://github.com/Kong/charts/pull/914) - -## 2.29.0 - -### Improvements -* Make it possible to set the admission webhook's `timeoutSeconds`. - [#894](https://github.com/Kong/charts/pull/894) - -## 2.28.1 - -### Fixed - -* The admission webhook now includes Gateway API resources and Ingress - resources for controller versions 2.12+. This version introduces new - validations for Kong's regex path implementation. - [#892](https://github.com/Kong/charts/pull/892) - -## 2.28.0 - -### Improvements - -* Bump default `kong` image tag to 3.4. - [#883](https://github.com/Kong/charts/pull/883) -* Bump default ingress controller image tag to 2.12. -* Added validation rule for `latency` upstream load balancing algorithm to - CRDs. [Upgrade your CRDs](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md#updates-to-crds) - when installing this release. - -## 2.27.0 - -### Improvements - -* Listens now all support `.address` configuration. This was an existing - setting that was not applied properly for some listens. - [#881](https://github.com/Kong/charts/pull/881) - -## 2.26.5 - -### Fixed - -* Kuma ServiceAccount Token hints and volumes are also available in migrations - Pods. - [#877](https://github.com/Kong/charts/pull/877) - -## 2.26.4 - -### Fixed - -* updated `admin_api_uri` to `admin_gui_api_url` as per [kong documentation](https://docs.konghq.com/gateway/3.4.x/reference/configuration/#admin_api_uri). - -## 2.26.3 - -### Fixed - -* Enabled Service and Ingress in Kong Manager for non enterprise users. - -## 2.26.2 - -### Fixed - -* Add missing CRD KongConsumerGroup and extend status subresource for CRDs - -## 2.26.1 - -### Fixed - -* Fix parsing enterprise tags (like e.g. `3.4.0.0`) - [#857](https://github.com/Kong/charts/pull/857) - -## 2.26.0 - -### Breaking changes - -2.26 changes the default proxy readiness endpoint for newer Kong versions. This -causes an issue in a narrow edge case. If all of the following are true: - -* You use Kong 3.3 or newer. -* You use controller 2.10 or older. -* You run the controller and proxy in separate Deployments. - -you are affected and should review [the 2.26 upgrade instructions](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md#2260). - -### Improvements - -* Use the Kong 3.3 `/status/ready` endpoint for readiness probes by default if - available. If not available, use the old `/status` default. - [#844](https://github.com/Kong/charts/pull/844) -* Add ArgoCD `Sync` and `BeforeHookCreation` [hook policies](https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/) - to the the init and pre-upgrade migrations Jobs. -* Add controller's RBAC rules for `KongConsumerGroups` CRD. - [#850](https://github.com/Kong/charts/pull/850) -* Updated controller version to 2.11. - -## 2.25.0 - -- Generate the `adminApiService.name` value from `.Release.Name` rather than - hardcoding to `kong` - [#839](https://github.com/Kong/charts/pull/839) - -## 2.24.0 - -### Improvements - -* Running `tpl` against user-supplied labels and annotations used in Deployment - [#814](https://github.com/Kong/charts/pull/814) - - Example: - ```yaml - podLabels: - version: "{{ .Values.image.tag }}" # Will render dynamically when overridden downstream - ``` - -* Fail to render templates when PodSecurityPolicy was requested but cluster doesn't - serve its API. - [#823](https://github.com/Kong/charts/pull/823) -* Add support for multiple hosts and tls configurations for Kong proxy `Ingress`. - [#813](https://github.com/Kong/charts/pull/813) -* Bump postgres default tag to `13.11.0-debian-11-r20` which includes arm64 images. - [#834](https://github.com/Kong/charts/pull/834) - -### Fixed - -* Fix Ingress and HPA API versions during capabilities checking - [#827](https://github.com/Kong/charts/pull/827) - -## 2.23.0 - -### Improvements - -* Add custom label configuration option for Kong proxy `Ingress`. - [#812](https://github.com/Kong/charts/pull/812) -* Bump default `kong/kubernetes-ingress-controller` image tag to 2.10. - Bump default `kong` image tag to 3.3. - [#815](https://github.com/Kong/charts/pull/815) - -## 2.22.0 - -### Improvements - -* Removed redundant RBAC permissions for non-existing subresources `secrets/status` - and `endpoints/status`. - [#798](https://github.com/Kong/charts/pull/798) -* For Kong Ingress Controller in version >= 2.10, RBAC permissions for `Endpoints` - are not configured anymore (because it uses `EndpointSlices`). - [#798](https://github.com/Kong/charts/pull/798) -* Added support for setting `certificates.cluster.commonName`. This allows a custom - certificate `CommonName` to be provided when deploying Kong Gateway in hybrid - mode using Cert Manager [#804](https://github.com/Kong/charts/pull/804) - -## 2.21.0 - -### Improvements - -* Added support for `startupProbe` on Kong pods. This can be configured via - `.Values.startupProbe`. To maintain backward compatibility, it is disabled by default. - [#792](https://github.com/Kong/charts/pull/792) -* Customize Admission Webhook namespaceSelectors and compose them from values. - [#794](https://github.com/Kong/charts/pull/794) -* Added `CustomResourceDefinition` `list` and `watch` permissions to controller's ClusterRole. - [#796](https://github.com/Kong/charts/pull/796) - -## 2.20.2 - -### Fixed - -* Automatic license provisioning for Gateways managed by Ingress Controllers in Konnect mode - is disabled by default. - To enable it, set `.Values.ingressController.konnect.license.enabled=true`. - [#793](https://github.com/Kong/charts/pull/793) - -## 2.20.1 - -### Fixed - -* Fix correct timestamp format and remove `isCA` in certificates - [#791](https://github.com/Kong/charts/pull/791) - -## 2.20.0 - -### Improvements - -* Added support for automatic license provisioning for Gateways managed by - Ingress Controllers in Konnect mode (`.Values.ingressController.konnect.enabled=true`). - [#787](https://github.com/Kong/charts/pull/787) - -## 2.19.1 - -### Fixed - -* Fix `webhook-cert` being mounted regardless if `.Values.ingressController.enabled` - is set. - [#779](https://github.com/Kong/charts/pull/779) - -## 2.19.0 - -### Improvements - -* Security context enforces read-only root filesystem by default. This is not - expected to affect most configurations, but [will affect custom plugins that - write to the container filesystem](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md#2170). - [#770](https://github.com/Kong/charts/pull/770) - -## 2.18.0 - -### Improvements - -* Added support for the Admin API service TLS client verification. - [#780](https://github.com/Kong/charts/pull/780 - -## 2.17.1 - -### Fixed - -* The `-redhat` suffix on official KIC images is no longer considered part of - the semver string for version checks. - [#779](https://github.com/Kong/charts/pull/779) - -## 2.17.0 - -### Improvements - -* Added support for controller's gateway discovery. - With `ingressController.gatewayDiscovery.enabled` set to `true` Kong Ingress Controller - will enable gateway discovery using an Admin API service. - For more information on this please see [the corresponding README.md section][kic_gateway_discovery_readme]. - This feature is only available when deploying chart with Kong Ingress Controller in version 2.9 or higher. - [#747](https://github.com/Kong/charts/pull/747) -* Added experimental support for the ingress controller's Konnect sync feature via `ingressController.konnect.*` values. - This feature is only available when deploying chart with Kong Ingress Controller in version 2.9 or higher and - requires `ingressController.gatewayDiscovery.enabled` set to `true`. - [#746](https://github.com/Kong/charts/pull/746) -* Added support for annotations on the admission webhook ValidatingWebhookConfiguration. - [#760](https://github.com/Kong/charts/pull/760) -* Added support for `subject` and `privateKey` properties on certificates. - [#762](https://github.com/Kong/charts/pull/762) -* Added support for loadBalancerClass in LoadBalancer type services. - [#767](https://github.com/Kong/charts/pull/767) -* Added support for `GRPCRoute`s. - [#772](https://github.com/Kong/charts/pull/772) -* Default Kong version is bumped to 3.2. - [#773](https://github.com/Kong/charts/pull/773) -* Added support for admissionhook to include labels. - [#768](https://github.com/Kong/charts/pull/768) - -### Under the hood - -* Add kube-linter to the CI pipeline to ensure produced manifests comply - with community best practices. - [#751](https://github.com/Kong/charts/pull/751) - -[kic_gateway_discovery_readme]: ./README.md#the-gatewaydiscovery-section - -## 2.16.5 - -### Fixed - -* Fix autoscaling version detection. - [#752](https://github.com/Kong/charts/pull/752) -* Don't include a clear-stale-pid initContainer when kong gateway is not - enabled in the deployment. - [#749](https://github.com/Kong/charts/pull/749) - -## 2.16.4 - -### Fixed - -* HorizontalPodAutoscaler's API version is detected properly. - [#744](https://github.com/Kong/charts/pull/744) - -## 2.16.3 - -### Fixed - -* Fix template issue preventing custom dblessconfig volume from being mounted. - [#741](https://github.com/Kong/charts/pull/741) - -## 2.16.2 - -### Fixed - -* The admission webhook is disabled when the ingress controller is disabled, as - the admission webhook requires a service provided by the ingress controller. - -## 2.16.1 - -### Fixed - -* serviceAccount projected volume is properly provisioned for GKE clusters >= 1.20. - [#735](https://github.com/Kong/charts/pull/735) - -## 2.16.0 - -### Improvements - -* Let users specify their own labels and annotations for generated PodSecurityPolicy. - [#721](https://github.com/Kong/charts/pull/721) -* Enable the admission webhook by default. This can reject configuration, but - is not expected to be a meaningfully breaking change. Existing configuration - is not affected, and any new changes that the webhook would reject would also - be rejected by Kong. - [#727](https://github.com/Kong/charts/pull/727) -* Replaced static secret with projected volume in deployment. - [#722](https://github.com/Kong/charts/pull/722) -* Reject invalid log config values. - [#733](https://github.com/Kong/charts/pull/733) -* Update custom resource definitions to latest v2.8.1 from - kong/kubernetes-ingress-controller - [#730](https://github.com/Kong/charts/pull/730) -* Respect setting `.Values.deployment.serviceAccount.automountServiceAccountToken` in - migrations Jobs. This was already the case for the Deployment. - [#729](https://github.com/Kong/charts/pull/729) - -## 2.15.3 - -### Fixed - -* Changed `ingressController.readinessProbe` to use `/readyz` to prevent pods from becoming ready and serving 404s prior to the `ingress-controller` first syncing config to the `proxy` [#716](https://github.com/Kong/charts/pull/716). -* Fixed incorrect `if` block order in volume mount templates. - -## 2.15.2 - -### Fixed - -* Do not attempt to mount DB-less config if none provided by chart. - -## 2.15.1 - -### Fixed - -* Remove unnecessary failure condition from [#695](https://github.com/Kong/charts/pull/695). - -## 2.15.0 - -### Improvements - -* Add the `dblessConfig.secret` key to the values file, allowing the user to - supply a Secret for their dbless config file. - [#695](https://github.com/Kong/charts/pull/695) -* Add support for version `v1beta1` of the Gateway API when generating RBAC rules. -* Add support for version `v1beta1` of the Gateway API when generating RBAC rules. - ([#706](https://github.com/Kong/charts/pull/706)) -* Prevent supplying duplicate plugin inclusion to `KONG_PLUGINS` env variable. - ([#711](https://github.com/Kong/charts/pull/711)) - -### Fixed - -* Removed appProtocol to fix AKS load balancer - ([#705](https://github.com/Kong/charts/pull/705)) -* Fix lookup for CA certificate secret for admission webhook. - ([#704](https://github.com/Kong/charts/pull/704)) - -## 2.14.0 - -Note: KIC 2.8 does include several updates to CRDs, but only for documentation and validation. -You can [upgrade CRDs](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md#updates-to-crds), -but doing so is not required. - -### Improvements - -* Default Kong and KIC versions bumped to 3.1 and 2.8. -* UDP proxy (udpProxy) assumes the UDP protocol by default for stream entries (udpProxy.stream). - This can be still overridden to TCP by specifying the protocol explicitly, but it is not recommended to do so. - [#682](https://github.com/Kong/charts/pull/682) -* Supported `autoscaling/v2` API - ([#679](https://github.com/Kong/charts/pull/679)) -* Add support for specifying the minium number of seconds for which newly created pods should be ready without - any of its container crashing, for it to be considered available. (`deployment.minReadySeconds`) - ([#688](https://github.com/Kong/charts/pull/688)) -* Increased the default memory requests and limits for the Kong pod to 2G - ([#690](https://github.com/Kong/charts/pull/690)) -* Add a rule for `KongIngress` to the ValidatingWebhookConfiguration. - ([#702](https://github.com/Kong/charts/pull/702)) - -### Fixed - -* Removed `PodSecurityPolicy` if the API is not supported in k8s cluster - to be compatible to k8s 1.25+. - [#680](https://github.com/Kong/charts/pull/680) - - -## 2.13.1 - -### Improvements - -* Updated default controller version to [KIC 2.7](https://github.com/Kong/kubernetes-ingress-controller/blob/main/CHANGELOG.md#270). - -## 2.13.0 - -### Improvements - -* Added cert-manager issuer support for proxy default and cluster mtls certificates - ([#592](https://github.com/Kong/charts/pull/592)) -* Updated CRDs with the new ordering field for KongPlugins, the new - IngressClassParameters resource, and assorted field description updates. - These [require a manual update](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md#updates-to-crds). -* Updated default tags to Kong 3.0 and KIC 2.6. - -## 2.12.0 - -### Improvements - -* Added ClusterRole for cluster-scoped resources when using watchNamespaces. - [#611](https://github.com/Kong/charts/issues/611) -* Added `extraObjects` to create additional k8s resources as part of the helm release. - [#652](https://github.com/Kong/charts/issues/652) - -## 2.11.0 - -### Fixed - -* Fixed Deployment missing if in case of empty tolerations - [#630](https://github.com/Kong/charts/issues/630) -* Use stdout and stderr by default for all logs. Several were writing to prefix - directory files. - [#634](https://github.com/Kong/charts/issues/634) -* Remove `terminationGracePeriodSeconds` from KIC's container spec since this - field is only applicable for pods, not containers. - [#640](https://github.com/Kong/charts/issues/640) - -### Improvements - -* Bump controller version to 2.5. - [#642](https://github.com/Kong/charts/issues/642) -* Added `fullnameOverride` to override the normal resource name string. - [#635](https://github.com/Kong/charts/issues/635) -* Added size limits for emptyDir mounts. - [#632](https://github.com/Kong/charts/issues/632) - -## 2.10.2 - -### Fixed - -* Kuma now also mounts ServiceAccount tokens on releases without a controller - container. - -## 2.10.1 - -### Fixed - -* Updated manual ServiceAccount Secret mount format for compatibility with - Kuma. - -## 2.10.0 - -### Added - -* Added option to disable test job pods. - [#598](https://github.com/Kong/charts/issues/598) -* Changed default admission failure policy from `Fail` to `Ignore`. - [#612](https://github.com/Kong/charts/issues/612) -* ServiceAccount tokens are now only mounted in the controller container to - limit attack surface. - [#619](https://github.com/Kong/charts/issues/619) - -## 2.9.1 - -### Fixed - -* Fixed another unwanted newline chomp that broke GatewayClass - permissions. - -## 2.9.0 - -* Added terminationDelaySeconds for Ingress Controller. - ([597](https://github.com/Kong/charts/pull/597)) -* Made KNative permissions conditional on CRD availability. - -### Fixed - -* Removed KNative permission from the Gateway permissions set. - -## 2.8.2 - -### Fixed - -* Fixed an unwanted newline chomp in fix PR #595. - ([594](https://github.com/Kong/charts/pull/594)) - -## 2.8.1 - -### Fixed - -* Fixed the stream default type, which should have been an empty array, not an - empty map. This had no effect on chart behavior, but resulted in warning - messages when user values.yamls contained non-empty stream configuration. - ([594](https://github.com/Kong/charts/pull/594)) -* Gateway API permissions are no longer created if Gateway API CRDs are not - installed on the cluster. This would block installs by non-super admin users. - ([595](https://github.com/Kong/charts/pull/595)) - -## 2.8.0 - -### Breaking changes - -2.8 requires manual removal of existing IngressClass resources and updates the -Postgres sub-chart version. Further details are available [in the upgrade guide](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md#280). - -The chart honors `ingressController.installCRDs: false` again. Remove it from -your values.yaml if it is currently present. Unless your install user [lacks -permissions to read -CRDs](https://github.com/Kong/charts/blob/main/charts/kong/README.md#removing-c -luster-scoped-permissions), which would have prevented you from installing -earlier chart versions, you should omit this setting and let the templates -detect whether you use the legacy CRD installation method automatically. - -### Improvements - -* Added Ingress for cluster sync. - ([583](https://github.com/Kong/charts/pull/583)) -* Added controller support for custom environment variables. - ([568](https://github.com/Kong/charts/pull/568)) -* Ingress `pathType` field is now configurable. - ([564](https://github.com/Kong/charts/pull/564)) -* Added IngressClass resources to RBAC roles. - ([563](https://github.com/Kong/charts/pull/563)) -* Ingresses now support wildcard hostnames. - ([559](https://github.com/Kong/charts/pull/559)) -* Enables the option to add sidecar containers to the migration containers. - ([540](https://github.com/Kong/charts/pull/540)) -* Update the IngressClass controller string to match the value used upstream. - ([557](https://github.com/Kong/charts/pull/557)) -* Added support for user-defined controller volume mounts. - ([560](https://github.com/Kong/charts/pull/560)) -* Added support for autoscaling `behavior`. - ([561](https://github.com/Kong/charts/pull/561)) -* Improved support and documentation for installations that [lack - cluster-scoped permissions](https://github.com/Kong/charts/blob/main/charts/kong/README.md#removing-cluster-scoped-permissions). - ([565](https://github.com/Kong/charts/pull/565)) -* Updated podDisruptionBudget from `policy/v1beta1` to `policy/v1`. - ([574](https://github.com/Kong/charts/pull/574)) -* Updated controller version to 2.3. - -### Fixed - -* Removed CREATE from ValidatingWebhookConfiguration objectSelector for Secrets to align with changes in Kong/kubernetes-ingress-controller. - ([#542](https://github.com/Kong/charts/pull/542)) -* Fixed traffic routing from Istio's envoy proxy to Kong proxy when using Istio's AuthorizationPolicy. - ([#550](https://github.com/Kong/charts/pull/550)) -* Fixed creation of non-default IngressClasses - ([#552](https://github.com/Kong/charts/pull/552)) -* Fixed: wait_for_db no longer tries to instantiate the keyring in Kong Enterprise - ([#556](https://github.com/Kong/charts/pull/556)) - -## 2.7.0 - -2.7.0 includes CRD updates, which [must be applied manually](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md#270). - -### Breaking Changes - -* There are upstream changes to the Postgres sub-chart that change many - values.yaml keys. The default `postgresqlUsername` and `postgresqlDatabase` - keys used in this chart's values.yaml are now `auth.username` and - `auth.database`. If you set other Postgres sub-chart values, consult the - [upstream README](https://github.com/bitnami/charts/tree/master/bitnami/postgresql) - and [upgrade guide](https://docs.bitnami.com/kubernetes/infrastructure/postgresql/administration/upgrade/#to-1100) - to see what you need to change. - -### Improvements - -* Added Gateway API resources to RBAC rules. - ([#536](https://github.com/Kong/charts/pull/536)) -* Replaced `sleep 15` in `preStop` command with `--wait=15` argument to `kong quit`. - ([#531](https://github.com/Kong/charts/pull/531)) -* Added support for non `KONG_` prefixed custom environment variables - ([#530](https://github.com/Kong/charts/pull/530)) -* Updated to latest CRDs from upstream. - -## 2.6.5 - -### Fixed - -* Generated IngressClass resources persist across updates properly. - ([#518](https://github.com/Kong/charts/pull/518)) - -## 2.6.4 - -### Improvements - -* Updated default tags to Kong 2.7, Kong Enterprise 2.7.0.0, and Kong Ingress - Controller 2.1. - -### Fixed - -* Corrected a misnamed field in podDisruptionBudget. - ([#519](https://github.com/Kong/charts/pull/519)) - -## 2.6.3 - -### Improvements - -* Increased example resources for the Kong container. - ([#511](https://github.com/Kong/charts/pull/511)) - -### Fixed - -* Corrected an invalid label match condition for the admission webhook. - ([#513](https://github.com/Kong/charts/pull/513)) - -## 2.6.2 - -### Improvements - -* Added `app` and `version` labels to pods. - ([#504](https://github.com/Kong/charts/pull/504)) -* Reworked leftover socket file cleanup to avoid similar problems of the same - class. - ([#508](https://github.com/Kong/charts/pull/508)) - -### Fixed - -* SecurityContext and resources applied to PID cleanup initContainer also. - ([#503](https://github.com/Kong/charts/pull/503)) -* Disabled the admission webhook on Helm Secrets, fixing an issue where it - prevented Helm from updating release metadata. - ([#500](https://github.com/Kong/charts/pull/500)) -* initContainers that use the Kong image use the same imagePullPolicy as the - main Kong container. - ([#501](https://github.com/Kong/charts/pull/501)) -* Applied mesh sidecar annotations to the Pod, not the Deployment. - ([#507](https://github.com/Kong/charts/pull/507)) - -## 2.6.1 - -### Fixed - -* Disabled IngressClass creation on Kubernetes versions that do not support it. -* Added missing resources (Secrets, KongClusterPlugins) to the admission - controller configuration. - ([#492](https://github.com/Kong/charts/pull/492)) - -## 2.6.0 - -**Note:** chart versions 2.3.0 through 2.5.0 contained an incorrect -KongIngress CRD. The `proxy.path` field was missing. Helm will not fix this -automatically on upgrade. You can fix it by running: - -``` -kubectl apply -f https://raw.githubusercontent.com/Kong/charts/main/charts/kong/crds/custom-resource-definitions.yaml -``` - -### Improvements - -* Added an initContainer to clear leftover PID file in the event of a Kong - container crash, allowing the container to restart. - ([#480](https://github.com/Kong/charts/pull/480)) -* Added deployment.hostNetwork to enable host network access. - ([#486](https://github.com/Kong/charts/pull/486)) - -### Fixed - -* NOTES.txt documentation link now uses up-to-date location. -* Ingress availability check tightened to require the Ingress API specifically - in `networking.k8s.io/v1`. - ([#484](https://github.com/Kong/charts/pull/484)) -* Flipped backwards logic for creating an IngressClass when no IngressClass was - present. - ([#485](https://github.com/Kong/charts/pull/485)) -* Removed unnecessary hardcoded controller container argument. - ([#481](https://github.com/Kong/charts/pull/481)) -* Restored missing `proxy.path` field to KongIngress CRD. - -## 2.5.0 - -### Improvements - -* Default Kong proxy version updated to 2.6. - -### Fixed - -* Properly disable KongClusterPlugin when watchNamespaces is set. - ([#475](https://github.com/Kong/charts/pull/475)) - -## 2.4.0 - -### Breaking Changes - -* KIC now defaults to version 2.0. If you use a database, you must first - perform a temporary intermediate upgrade to disable KIC before upgrading it - to 2.0 and re-enabling it. See the [upgrade guide](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md#disable-ingress-controller-prior-to-2x-upgrade-when-using-postgresql) - for detailed instructions. -* ServiceAccount are now always created by default unless explicitly disabled. - ServiceAccount customization has [moved under the `deployment` section of - configuration](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md#changed-serviceaccount-configuration-location) - to reflect this. This accomodates configurations that need a ServiceAccount - but that do not use the ingress controller. - ([#455](https://github.com/Kong/charts/pull/455)) - -### Improvements - -* Migration jobs support a configurable backoffLimit. - ([#442](https://github.com/Kong/charts/pull/442)) -* Generated Ingresses now use `networking.k8s.io/v1` when available. - ([#446](https://github.com/Kong/charts/pull/446)) - -### Fixed - -* 5-digit UDP ports now work properly. - ([#443](https://github.com/Kong/charts/pull/443)) -* Fixed port name used for NLB annotation example. - ([#458](https://github.com/Kong/charts/pull/458)) -* Fixed a compatibility issue with Helm's `--set-file` feature and - user-provided DB-less configuration ConfigMaps. - ([#465](https://github.com/Kong/charts/pull/465)) - -## 2.3.0 - -### Breaking Changes - -* Upgraded CRDs to V1 from the previous deprecated v1beta1. - [#391](https://github.com/kong/charts/issues/391) - ACTION REQUIRED: This is a breaking change as it makes - this chart incompatible with Kubernetes clusters older - than v1.16.x. Upgrade your cluster to a version greater - than or equal to v1.16 before installing. - Note that technically it will remain possible to deploy - on older clusters by managing the CRDs manually ahead of - time (e.g. intentionally deploying the legacy CRDs) but - these configurations will be considered unsupported. - [upgrade](https://kubernetes.io/docs/tasks/administer-cluster/cluster-upgrade/) - ACTION REQUIRED: For existing deployments Helm avoids managing - CRDs so when upgrading from a previous release you will need - to apply the new V1 versions of the CRDs (in `crds/`) manually. - [hip-0011](https://github.com/helm/community/blob/main/hips/hip-0011.md) - ([#415](https://github.com/Kong/charts/pull/415)) -* Added support for controller metrics to the Prometheus resources. This - requires KIC 2.x. The chart automatically detects if your controller image is - compatible, but only if your tag is semver-compliant. If you are using an - image without a semver-compliant tag (such as `next`) you _must_ set the - `ingressController.image.effectiveSemver` value to a semver string - appropriate for your image (for example, if your image is 2.0.0-based, you - would set it to `2.0.0`. - ([#430](https://github.com/Kong/charts/pull/430)) - -### Improvements - -* Updated default Kong versions to 2.5 (OSS) and 2.5.0.0 (Enterprise). -* Added user-configured initContainer support to Jobs. - ([#408](https://github.com/Kong/charts/pull/408)) -* Upgraded RBAC resources to v1 from v1beta1 for compatibility with Kubernetes - 1.22 and newer. This breaks compatibility with Kubernetes 1.7 and older, but - these Kubernetes versions were never supported, so this change is not - breaking. Added additional permissions to support KIC 2.x. - ([#420](https://github.com/Kong/charts/pull/420)) - ([#419](https://github.com/Kong/charts/pull/419)) -* Added `ingressController.watchNamespaces[]` to values.yaml. When set, the - controller will only watch the listed namespaces (instead of all namespaces, - the default), and will create Roles for each namespace (instead of a - ClusterRole). This feature requires KIC 2.x. - ([#420](https://github.com/Kong/charts/pull/420)) -* Added support for [dnsPolicy and - dnsConfig](https://kubernetes.io/docs/tasks/administer-cluster/nodelocaldns/). - ([#425](https://github.com/Kong/charts/pull/425)) -* Use migration commands directly in upgrade/install Jobs instead of invoking - them via a shell. This adds support for some additional features in Kong - images that only apply when the container command starts with `kong`. - ([#429](https://github.com/Kong/charts/pull/429)) - -### Fixed -* Fixed an incorrect template for DaemonSet releases. - ([#426](https://github.com/Kong/charts/pull/426)) - -## 2.2.0 - -### Breaking changes - -* Removed default `maxUnavailable` setting for pod disruption budget - configuration. This is necessary to allow usage of the `minUnavailable` - setting, but means that there is no longer any default availability - constraint. If you set `podDisruptionBudget.enabled=true` in your values and - did not previously set any `podDisruptionBudget.maxUnavailable` value, you - must add `podDisruptionBudget.maxUnavailable="50%"` to your values. - -### Improvements - -* Added host alias injection to override DNS and/or add DNS entries not - available from the DNS resolver. - ([#366](https://github.com/Kong/charts/pull/366)) -* Added support for custom labels. - ([#370](https://github.com/Kong/charts/pull/370)) -* Only add paths to Ingresses if configured, for OpenShift 4.x compatibility. - ([#375](https://github.com/Kong/charts/pull/375)) -* Kong containers no longer the image ENTRYPOINT. This allows the stock image - bootstrap scripts to run normally. - ([#377](https://github.com/Kong/charts/pull/377)) -* Added security context settings for containers. - ([#387](https://github.com/Kong/charts/pull/387)) -* Bumped Kong and controller image defaults to the latest versions. - ([#378](https://github.com/Kong/charts/pull/378)) -* Added support for user-provided admission webhook certificates. - ([#385](https://github.com/Kong/charts/pull/385)) -* Disable service account tokens when it is unnecessary. - ([#389](https://github.com/Kong/charts/pull/389)) - -### Fixed - -* Admission webhook port is now listed under the controller container, where - the admission webhook runs. - ([#384](https://github.com/Kong/charts/pull/384)) - -### Documentation - -* Removed a duplicate key from example values. - ([#360](https://github.com/Kong/charts/pull/360)) -* Clarified Enterprise free mode usage. - ([#362](https://github.com/Kong/charts/pull/362)) -* Expand EKS Service annotation examples for proxy. - ([#376](https://github.com/Kong/charts/pull/375)) - -## 2.1.0 - -### Improvements - -* Added support for user-defined volumes, volume mounts, and init containers. - ([#317](https://github.com/Kong/charts/pull/317)) -* Tolerations are now applied to migration Job Pods also. - ([#341](https://github.com/Kong/charts/pull/341)) -* Added support for using a DaemonSet instead of Deployment. - ([#347](https://github.com/Kong/charts/pull/347)) -* Updated default image versions and completed migration off Bintray - repositories. - ([#349](https://github.com/Kong/charts/pull/349)) -* PDB ignores migration Job Pods. - ([#352](https://github.com/Kong/charts/pull/352)) - -### Documentation - -* Clarified service monitor usage information. - ([#345](https://github.com/Kong/charts/pull/345)) - -## 2.0.0 - -### Breaking changes - -* Helm 2 is no longer supported. You **must** [migrate your Kong chart releases - to Helm 3](https://helm.sh/docs/topics/v2_v3_migration/) before updating to - this release. -* Deprecated [Portal auth settings](https://github.com/Kong/charts/blob/kong-1.15.0/charts/kong/UPGRADE.md#removal-of-dedicated-portal-authentication-configuration-parameters) - are no longer supported. -* The deprecated [`runMigrations` setting](https://github.com/Kong/charts/blob/kong-1.15.0/charts/kong/UPGRADE.md#changes-to-migration-job-configuration) - is no longer supported. -* Deprecated [admin API Service configuration](https://github.com/Kong/charts/blob/kong-1.15.0/charts/kong/UPGRADE.md#changes-to-kong-service-configuration) - is no longer supported. -* Deprecated [multi-host proxy configuration](https://github.com/Kong/charts/blob/kong-1.15.0/charts/kong/UPGRADE.md#removal-of-multi-host-proxy-ingress) - is no longer supported. - -`helm upgrade` with the previous version (1.15.0) will print a warning message -if you still use any of the removed values.yaml configuration. If you do not -see any warnings after the upgrade completes, you are already using the modern -equivalents of these settings and can proceed with upgrading to 2.0.0-rc1. - -### Improvements - -* Admission webhook certificates persist after their initial creation. This - prevents an unnecessary restart of Kong Pods on upgrades that do not actually - modify the deployment. - ([#256](https://github.com/Kong/charts/pull/256)) -* `ingressController.installCRDs` now defaults to `false`, simplifying - installation on Helm 3. Installs now default to using Helm 3's CRD management - system, and do not require changes to values or install flags to install - successfully. - ([#305](https://github.com/Kong/charts/pull/305)) -* Added support for Pod `topologySpreadConstraints`. - ([#308](https://github.com/Kong/charts/pull/308)) -* Kong Ingress Controller image now pulled from Docker Hub (due to Bintray being - discontinued). Changed the default Docker image repository for the ingress - controller. - -### Fixed - -* Generated admission webhook certificates now include SANs for compatibility - with Go 1.15 controller builds. - ([#312](https://github.com/Kong/charts/pull/312)). - -### Documentation - -* Clarified use of `terminationGracePeriodSeconds`. - ([#302](https://github.com/Kong/charts/pull/302)) - -## 1.15.0 - -1.15.0 is an interim release before the planned release of 2.0.0. There were -several feature changes we wanted to release prior to the removal of deprecated -functionality for 2.0. The original planned deprecations covered in the [1.14.0 -changelog](#1140) are still planned for 2.0.0. - -### Improvements - -* The default Kong version is now 2.3 and the default Kong Enterprise version - is now 2.3.2.0. -* Added configurable `terminationGracePeriodSeconds` for the pre-stop lifecycle - hook. - ([#271](https://github.com/Kong/charts/pull/271)). -* Initial migration database wait init containers no longer have a default - image configuration in values.yaml. When no image is specified, the chart - will use the Kong image. The standard Kong images include bash, and can run - the database wait script without downloading a separate image. Configuring a - wait image is now only necessary if you use a custom Kong image that lacks - bash. - ([#285](https://github.com/Kong/charts/pull/285)). -* Init containers for database availability and migration completeness can now - be disabled. They cause compatibility issues with many service meshes. - ([#285](https://github.com/Kong/charts/pull/285)). -* Removed the default migration Job annotation that disabled Kuma's mesh proxy. - The latest version of Kuma no longer prevents Jobs from completing. - ([#285](https://github.com/Kong/charts/pull/285)). -* Services now support user-configurable labels, and the Prometheus - ServiceMonitor label is included on the proxy Service by default. Users that - disable the proxy Service and add this label to another Service to collect - metrics. - ([#290](https://github.com/Kong/charts/pull/290)). -* Migration Jobs now allow resource quota configuration. Init containers - inherit their resource quotas from their associated Kong container. - ([#294](https://github.com/Kong/charts/pull/294)). - -### Fixed - -* The database readiness wait script ConfigMap and associated mounts are no - longer created if that feature is not in use. - ([#285](https://github.com/Kong/charts/pull/285)). -* Removed a duplicated field from CRDs. - ([#281](https://github.com/Kong/charts/pull/281)). - -## 1.14.5 - -### Fixed - -* Removed `http2` from default status listen TLS parameters. It only supports a - limited subset of the extra listen parameters, and does not allow `http2`. - -## 1.14.4 - -### Fixed - -* Status listens now include parameters in the default values.yaml. The absence - of these defaults caused a template rendering error when the TLS listen was - enabled. - -### Documentation - -* Updated status listen comments to reflect TLS listen availability on Kong - 2.1+. - -## 1.14.3 - -### Fixed - -* Fix issues with legacy proxy Ingress object template. - -## 1.14.2 - -### Fixed - -* Corrected invalid default value for `enterprise.smtp.smtp_auth`. - -## 1.14.1 - -### Fixed - -* Moved several Kong container settings into the appropriate template block. - Previously these were rendered whether or not the Kong container was enabled, - which unintentionally applied them to the controller container. - -## 1.14.0 - -### Breaking changes - -1.14 is the last planned 1.x version of the Kong chart. 2.x will remove support -for Helm 2.x and all deprecated configuration. The chart prints a warning when -upgrading or installing if it detects any configuration still using an old -format. - -* All Ingress and Service resources now use the same template. This ensures - that all chart Ingresses and Services support the same configuration. The - proxy previously used a unique Ingress configuration, which is now - deprecated. If you use the proxy Ingress, [see the instructions in - UPGRADE.md](https://github.com/Kong/charts/blob/kong-1.14.0/charts/kong/UPGRADE.md#removal-of-multi-host-proxy-ingress) - to update your configuration. No changes are required for other Service and - Ingress configurations. - ([#251](https://github.com/Kong/charts/pull/251)). -* The chart now uses the standard Kong status endpoint instead of custom - configuration, allowing users to specify their own custom configuration. The - status endpoint is no available in versions older than Kong 1.4.0 or Kong - Enterprise 1.5.0; if you use an older version, you will need to [add and load - the old custom configuration](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md#default-custom-server-block-replaced-with-status-listen). - - If you use a newer version and include Kong container readinessProbe and/or - livenessProbe configuration in your values.yaml, you must change the port - from `metrics` to `status`. - ([#255](https://github.com/Kong/charts/pull/255)). - -### Fixed - -* Correct an issue with migrations Job toggles. - ([#231](https://github.com/Kong/charts/pull/231)) - -## 1.13.0 - -### Improvements - -* Updated default Kong Enterprise version to 2.2.1.0-alpine. -* Updated default Kong Ingress Controller version to 1.1. -* Add `namespace` to values.yaml to override release namespace if desired. - ([#231](https://github.com/Kong/charts/pull/231)) - -### Fixed - -* Migration Jobs now use the same nodeSelector configuration as the main Kong - Deployment. - ([#238](https://github.com/Kong/charts/pull/238)) -* Disabled custom Kong template mount if Kong is not enabled. - ([#240](https://github.com/Kong/charts/pull/240)) -* Changed YAML string to a YAML boolean. - ([#240](https://github.com/Kong/charts/pull/240)) - -### Documentation - -* Clarify requirements for using horizontal pod autoscalers. - ([#236](https://github.com/Kong/charts/pull/236)) - -## 1.12.0 - -### Improvements - -* Increased default worker count to 2 to avoid issues with latency during - blocking tasks, such as DB-less config updates. This change increases memory - usage, but the increase should not be a concern for any but the smallest - deployments (deployments with memory limits below 512MB). -* Updated default Kong version to 2.2. - ([#221](https://github.com/Kong/charts/pull/221)) -* Updated default Kong Enterprise version to 2.1.4.1. -* Added a means to mount extra ConfigMap and Secret resources. - ([#208](https://github.com/Kong/charts/pull/208)) -* Added configurable annotations for migration Jobs. - ([#219](https://github.com/Kong/charts/pull/219)) -* Added template for deprecation warnings to automate formatting and avoid - excess newlines. - -### Fixed - -* Upgrades no longer force auto-scaling Deployments back to the replica count. - ([#222](https://github.com/Kong/charts/pull/222)) - -## 1.11.0 - -### Breaking changes - -* Kong Ingress Controller 1.0 removes support for several deprecated flags and - the KongCredential custom resource. Please see the [controller changelog](https://github.com/Kong/kubernetes-ingress-controller/blob/main/CHANGELOG.md#breaking-changes) - for details. Note that Helm 3 will not remove the KongCredential CRD by - default: you should delete it manually after converting KongCredentials to - [credential Secrets](https://github.com/Kong/kubernetes-ingress-controller/blob/next/docs/guides/using-consumer-credential-resource.md#provision-a-consumer). - If you manage CRDs using Helm (check to see if your KongCredential CRD has a - `app.kubernetes.io/managed-by: Helm` label), perform the credential Secret - conversion **before** upgrading to chart 1.11.0 to avoid losing credential - configuration. -* The chart no longer uses the `extensions` API for PodSecurityPolicy, and now - uses the modern `policy` API. This breaks compatibility with Kubernetes - versions 1.11 and older. - ([#195](https://github.com/Kong/charts/pull/195)) - -### Improvements - -* Updated default controller version to 1.0. -* The chart now adds namespace information to manifests explicitly. This - simplifies workflows that use `helm template`. - ([#193](https://github.com/Kong/charts/pull/193)) - -### Fixed -* Changes to annotation block generation prevent incorrect YAML indentation - when specifying annotations via command line arguments to Helm commands. - ([#200](https://github.com/Kong/charts/pull/200)) - -## 1.10.0 - -### Breaking changes - -* Kong Ingress Controller 0.10.0 comes with breaking changes to global - `KongPlugin`s and to resources without an ingress class defined. Refer to the - [`UPGRADE.md notes for chart 1.10.0`](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md#1100) - for details. - -### Improvements - -* Updated default controller version to 0.10.0. - -### Fixed - -* Removed the `status` field from the `TCPIngress` CRD. - ([#188](https://github.com/Kong/charts/pull/188)) - -## 1.9.1 - -### Documentation - -* Clarified documentation for [breaking changes in 1.9.0](#190) to indicate - that any values.yaml that sets `waitImage.repository` requires changes, - including those that set the old default. -* Updated Enterprise examples to use latest Enterprise image version. - -## 1.9.0 - -### Breaking changes - -1.9.0 now uses a bash-based pre-migration database availability check. If you -set `waitImage.repository` in values.yaml, either to the previous default -(`busybox`) or to a custom image, you must change it to an image that includes -a `bash` executable. - -Once you have `waitImage.repository` set to an image with bash, [perform an -initial chart version upgrade with migrations disabled](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md#changes-to-wait-for-postgres-image) -before re-enabling migrations, updating your Kong image version, and performing -a second release upgrade. - -### Improvements - -* Added support for sidecar injection. - ([#174](https://github.com/Kong/charts/pull/174)) -* Changed to a bash-based pre-migration database availability check. - ([#179](https://github.com/Kong/charts/pull/179)) -* Changed to a bash-based pre-migration database availability check. - ([#179](https://github.com/Kong/charts/pull/179)) -* Updated default Kong Enterprise version to 2.1.3.0. - -### Fixed - -* Added missing cluster telemetry service and fixed missing cluster service - port. - ([#185](https://github.com/Kong/charts/pull/185)) - -### Documentation - -* Added an example Enterprise controller-managed DB-less values.yaml. - ([#175](https://github.com/Kong/charts/pull/175)) - -## 1.8.0 - -**Kong Enterprise users:** please review documentation for the [Kong Enterprise -2.1.x beta -release](https://docs.konghq.com/enterprise/2.1.x/release-notes/#coming-soon) -and [hybrid mode on Kong -Enterprise](https://docs.konghq.com/enterprise/2.1.x/deployment/hybrid-mode/#kubernetes-support) -as well. Version 1.8 of the Kong Helm chart adds support for hybrid mode, which -is currently only available in the 2.1.x beta. Production systems should -continue to use the Kong Enterprise 1.5.x stable releases, which do not support -hybrid mode. - -### Improvements - -* Update default Kong version to 2.1. -* Update Kong Enterprise images to 1.5.0.4 (kong-enterprise-edition) and - 2.0.4.2 (kong-enterprise-k8s). -* Updated default controller version to 0.9.1. - ([#150](https://github.com/Kong/charts/pull/150)) -* Added support for ServiceMonitor targetLabels (for use with the Prometheus - Operator). - ([#162](https://github.com/Kong/charts/pull/162)) -* Automatically handle the [new port_maps - setting](https://github.com/Kong/kong/pull/5861) for the proxy service. - ([#169](https://github.com/Kong/charts/pull/169)) -* Add support for [hybrid mode - deployments](https://docs.konghq.com/latest/hybrid-mode/). - ([#160](https://github.com/Kong/charts/pull/160)) - - -### Fixed - -* Fixed an issue with improperly-rendered listen strings. - ([#155](https://github.com/Kong/charts/pull/155)) - -### Documentation - -* Improved inline documentation of `env` in values.yaml. - ([#163](https://github.com/Kong/charts/pull/163)) - -## 1.7.0 - -### Improvements - -* Added support for - [CRD-only](https://github.com/Kong/charts/blob/1.7.0/charts/kong/README.md#crds-only) - and [controller-only releases](https://github.com/Kong/charts/blob/next/charts/kong/README.md#standalone-controller-nodes). - ([#136](https://github.com/Kong/charts/pull/136)) - -### Documentation - -* Added a set of [example - values.yamls](https://github.com/Kong/charts/tree/main/charts/kong/example-values) - for various configurations of Kong and Kong Enterprise. - ([#134](https://github.com/Kong/charts/pull/134)) - -## 1.6.1 - -This release contains no changes other than the version. This is to address an -issue with our release automation. - -## 1.6.0 - -### Improvements - -* Updated default controller version to 0.9.0. - ([#132](https://github.com/Kong/charts/pull/132)) -* Updated default Enterprise versions to 2.0.4.1 and 1.5.0.2. - ([#130](https://github.com/Kong/charts/pull/130)) -* Added ability to override chart lifecycle. - ([#116](https://github.com/Kong/charts/pull/116)) -* Added ability to apply user-defined labels to pods. - ([#121](https://github.com/Kong/charts/pull/121)) -* Filtered serviceMonitor to disable metrics collection from non-proxy - services. - ([#112](https://github.com/Kong/charts/pull/112)) -* Set admin API to listen on localhost only if possible. - ([#125](https://github.com/Kong/charts/pull/125)) -* Add `auth_type` and `ssl` settings to `smtp` block. - ([#127](https://github.com/Kong/charts/pull/127)) -* Remove UID from default securityContext. - ([#138](https://github.com/Kong/charts/pull/138)) - -### Documentation - -* Corrected invalid default serviceMonitor.interval value. - ([#110](https://github.com/Kong/charts/pull/110)) -* Removed duplicate `installCRDs` documentation. - ([#115](https://github.com/Kong/charts/pull/115)) -* Simplified example license Secret creation command. - ([#131](https://github.com/Kong/charts/pull/131)) - -## 1.5.0 - -### Improvements - -* Added support for annotating the ServiceAccount. - ([#97](https://github.com/Kong/charts/pull/97)) -* Updated controller templates to use environment variables for default - configuration. - ([#99](https://github.com/Kong/charts/pull/99)) -* Added support for stream listens. - ([#103](https://github.com/Kong/charts/pull/103)) -* Moved migration configuration under a `migrations` block with support for - enabling upgrade jobs independently and adding annotations. - ([#102](https://github.com/Kong/charts/pull/102)) -* Added support for the [status listen](https://github.com/Kong/kong/pull/4977). - ([#107](https://github.com/Kong/charts/pull/107)) -* :warning: Exposed PodSecurityPolicy spec in values.yaml and added default - configuration to enforce a read-only root filesystem. **Kong Enterprise - versions prior to 1.5.0 require the root filesystem be read-write. If you use - an older version and enforce PodSecurityPolicy, you must set - `.Values.podSecurityPolicy.spec.readOnlyRootFilesystem: false`.** - ([#104](https://github.com/Kong/charts/pull/104)) - -### Fixed - -* Fixed old init-migrations jobs blocking upgrades. - ([#102](https://github.com/Kong/charts/pull/102)) - -### Documentation - -* Fixed discrepancy between image version in values.yaml and README.md. - ([#96](https://github.com/Kong/charts/pull/96)) -* Added example Enterprise image tags to values.yaml. - ([#100](https://github.com/Kong/charts/pull/100)) -* Added deprecation warnings in CHANGELOG.md. - ([#91](https://github.com/Kong/charts/pull/91)) -* Improved RBAC documentation to clarify process and use new controller - functionality. - ([#95](https://github.com/Kong/charts/pull/95)) -* Added documentation for managing multi-release clusters with varied node - roles (e.g. admin-only, Portal-only, etc.). - ([#102](https://github.com/Kong/charts/pull/102)) - -## 1.4.1 - -### Documentation - -* Fixed an issue with the 1.4.1 upgrade steps. - -## 1.4.0 - -### Improvements - -* :warning: Service and listen configuration now use a unified configuration - format. **The previous configuration format for the admin API service is - deprecated and will be removed in a future release.** Listen configuration - now supports specifying parameters. Kubernetes service creation can now be - enabled or disabled for all Kong services. Users should review the - [1.4.0 upgrade guide](https://github.com/Kong/charts/blob/next/charts/kong/UPGRADE.md#changes-to-kong-service-configuration) - for details on how to update their values.yaml. - ([#72](https://github.com/Kong/charts/pull/72)) -* Updated the default controller version to 0.8. This adds new - KongClusterPlugin and TCPIngress CRDs and RBAC permissions for them. Users - should also note that `strip_path` now defaults to disabled, which will - likely break existing configuration. See [the controller - changelog](https://github.com/Kong/kubernetes-ingress-controller/blob/main/CHANGELOG.md#080---20200325) - and [upgrade-guide](https://github.com/Kong/charts/blob/next/charts/kong/UPGRADE.md#strip_path-now-defaults-to-false-for-controller-managed-routes) - for full details. - ([#77](https://github.com/Kong/charts/pull/77)) -* Added support for user-supplied ingress controller CLI arguments. - ([#79](https://github.com/Kong/charts/pull/79)) -* Added support for annotating the chart's deployment. - ([#81](https://github.com/Kong/charts/pull/81)) -* Switched to the Bitnami Postgres chart, as the chart in Helm's repository has - [moved - there](https://github.com/helm/charts/tree/master/stable/postgresql#this-helm-chart-is-deprecated). - ([#82](https://github.com/Kong/charts/pull/82)) - -### Fixed - -* Corrected the app version in Chart.yaml. - ([#86](https://github.com/Kong/charts/pull/86)) - -### Documentation - -* Fixed incorrect default value for `installCRDs`. - ([#78](https://github.com/Kong/charts/pull/78)) -* Added detailed upgrade guide covering breaking changes and deprecations. - ([#74](https://github.com/Kong/charts/pull/74)) -* Improved installation steps for Helm 2 and Helm 3. - ([#83](https://github.com/Kong/charts/pull/83)) - ([#84](https://github.com/Kong/charts/pull/84)) -* Remove outdated `ingressController.replicaCount` setting. - ([#87](https://github.com/Kong/charts/pull/87)) - -## 1.3.1 - -### Fixed - -* Added missing newline to NOTES.txt template. - ([#66](https://github.com/Kong/charts/pull/66)) - -### Documentation - -* Instruct users to create secrets for both the kong-enterprise-k8s and - kong-enterprise-edition Docker registries. - ([#65](https://github.com/Kong/charts/pull/65)) -* Updated maintainer information. - -## 1.3.0 - -### Improvements - -* Custom plugin mounts now support subdirectories. These are necessary for - plugins that include their own migrations. Note that Kong versions prior to - 2.0.1 [have a bug](https://github.com/Kong/kong/pull/5509) that prevents them - from running these migrations. ([#24](https://github.com/Kong/charts/pull/24)) -* LoadBalancer services will now respect their NodePort. - ([#48](https://github.com/Kong/charts/pull/41)) -* The proxy TLS listen now enables HTTP/2 (and, by extension, gRPC). - ([#47](https://github.com/Kong/charts/pull/47)) -* Added support for `priorityClassName` to the Kong deployment. - ([#56](https://github.com/Kong/charts/pull/56)) -* Bumped default Kong version to 2.0 and controller version to 0.7.1. - ([#60](https://github.com/Kong/charts/pull/60)) -* :warning: Removed dedicated Portal auth settings, which are unnecessary in - modern versions. **The `enterprise.portal.portal_auth` and - `enterprise.portal.session_conf_secret` settings in values.yaml are - deprecated and will be removed in a future release.** See the [upgrade - guide](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md#removal-of-dedicated-portal-authentication-configuration-parameters) - for instructions on migrating them to environment variables. - ([#55](https://github.com/Kong/charts/pull/55)) - -### Fixed - -* Fixed typo in HorizontalPodAutoscaler template. - ([#45](https://github.com/Kong/charts/pull/45)) - -### Documentation - -* Added contributing guidelines. ([#41](https://github.com/Kong/charts/pull/41)) -* Added README section for Helm 2 versus Helm 3 considerations. - ([#34](https://github.com/Kong/charts/pull/41)) -* Added documentation for `proxy.annotations` to README.md. - ([#57](https://github.com/Kong/charts/pull/57)) -* Added FAQ entry for init-migrations job conflicts on upgrades. - ([#59](https://github.com/Kong/charts/pull/59) -* Move changelog out of README.md into CHANGELOG.md. - ([#60](https://github.com/Kong/charts/pull/60) -* Improved formatting for 1.2.0 changelog. - -## 1.2.0 - -### Improvements -* Added support for HorizontalPodAutoscaler. - ([#12](https://github.com/Kong/charts/pull/12)) -* Environment variables are now consistently sorted alphabetically. - ([#29](https://github.com/Kong/charts/pull/29)) - -### Fixed -* Removed temporary ServiceAccount template, which caused upgrades to break the - existing ServiceAccount's credentials. Moved template and instructions for - use to FAQs, as the temporary user is only needed in rare scenarios. - ([#31](https://github.com/Kong/charts/pull/31)) -* Fix an issue where the wait-for-postgres job did not know which port to use - in some scenarios. ([#28](https://github.com/Kong/charts/pull/28)) - -### Documentation -* Added warning regarding volume mounts. - ([#25](https://github.com/Kong/charts/pull/25)) - -## 1.1.1 - -### Fixed - -* Add missing `smtp_admin_emails` and `smtp_mock = off` to SMTP enabled block in - `kong.env`. - -### CI changes - -* Remove version bump requirement in preparation for new release model. - -## 1.1.0 - -> https://github.com/Kong/charts/pull/4 - -### Improvements - -* Significantly refactor the `env`/EnvVar templating system to determine the - complete set of environment variables (both user-defined variables and - variables generated from other sections of values.yaml) and resolve conflicts - before rendering. User-provided values are now guaranteed to take precedence - over generated values. Previously, precedence relied on a Kubernetes - implementation quirk that was not consistent across all Kubernetes providers. -* Combine templates for license, session configuration, etc. that generate - `secretKeyRef` values into a single generic template. - -## 1.0.3 - -- Fix invalid namespace for pre-migrations and Role. -- Fix whitespaces formatting in README. - -## 1.0.2 - -- Helm 3 support: CRDs are declared in crds directory. Backward compatible support for helm 2. - -## 1.0.1 - -Fixed invalid namespace variable name causing ServiceAccount and Role to be generated in other namespace than desired. - -## 1.0.0 - -There are not code changes between `1.0.0` and `0.36.5`. -From this version onwards, charts are hosted at https://charts.konghq.com. - -The `0.x` versions of the chart are available in Helm's -[Charts](https://github.com/helm/charts) repository are are now considered -deprecated. - -## 0.36.5 - -> PR https://github.com/helm/charts/pull/20099 - -### Improvements - -- Allow `grpc` protocol for KongPlugins - -## 0.36.4 - -> PR https://github.com/helm/charts/pull/20051 - -### Fixed - -- Issue: [`Ingress Controller errors when chart is redeployed with Admission - Webhook enabled`](https://github.com/helm/charts/issues/20050) - -## 0.36.3 - -> PR https://github.com/helm/charts/pull/19992 - -### Fixed - -- Fix spacing in ServiceMonitor when label is specified in config - -## 0.36.2 - -> PR https://github.com/helm/charts/pull/19955 - -### Fixed - -- Set `sideEffects` and `admissionReviewVersions` for Admission Webhook -- timeouts for liveness and readiness probes has been changed from `1s` to `5s` - -## 0.36.1 - -> PR https://github.com/helm/charts/pull/19946 - -### Fixed - -- Added missing watch permission to custom resources - -## 0.36.0 - -> PR https://github.com/helm/charts/pull/19916 - -### Upgrade Instructions - -- When upgrading from <0.35.0, in-place chart upgrades will fail. - It is necessary to delete the helm release with `helm del --purge $RELEASE` and redeploy from scratch. - Note that this will cause downtime for the kong proxy. - -### Improvements - -- Fixed Deployment's label selector that prevented in-place chart upgrades. - -## 0.35.1 - -> PR https://github.com/helm/charts/pull/19914 - -### Improvements - -- Update CRDs to Ingress Controller 0.7 -- Optimize readiness and liveness probes for more responsive health checks -- Fixed incorrect space in NOTES.txt - -## 0.35.0 - -> PR [#19856](https://github.com/helm/charts/pull/19856) - -### Improvements - -- Labels on all resources have been updated to adhere to the Helm Chart - guideline here: - https://v2.helm.sh/docs/developing_charts/#syncing-your-chart-repository - -## 0.34.2 - -> PR [#19854](https://github.com/helm/charts/pull/19854) - -This release contains no user-visible changes - -### Under the hood - - - Various tests have been consolidated to speed up CI. - -## 0.34.1 - -> PR [#19887](https://github.com/helm/charts/pull/19887) - -### Fixed - -- Correct indentation for Job securityContexts. - -## 0.34.0 - -> PR [#19885](https://github.com/helm/charts/pull/19885) - -### New features - -- Update default version of Ingress Controller to 0.7.0 - -## 0.33.1 - -> PR [#19852](https://github.com/helm/charts/pull/19852) - -### Fixed - -- Correct an issue with white space handling within `final_env` helper. - -## 0.33.0 - -> PR [#19840](https://github.com/helm/charts/pull/19840) - -### Dependencies - -- Postgres sub-chart has been bumped up to 8.1.2 - -### Fixed - -- Removed podDisruption budge for Ingress Controller. Ingress Controller and - Kong run in the same pod so this was no longer applicable -- Migration job now receives the same environment variable and configuration - as that of the Kong pod. -- If Kong is configured to run with Postgres, the Kong pods now always wait - for Postgres to start. Previously this was done only when the sub-chart - Postgres was deployed. -- A hard-coded container name is used for kong: `proxy`. Previously this - was auto-generated by Helm. This deterministic naming allows for simpler - scripts and documentation. - -### Under the hood - -Following changes have no end user visible effects: - -- All Custom Resource Definitions have been consolidated into a single - template file -- All RBAC resources have been consolidated into a single template file -- `wait-for-postgres` container has been refactored and de-duplicated - -## 0.32.1 - -### Improvements - -- This is a doc only release. No code changes have been done. -- Post installation steps have been simplified and now point to a getting - started page -- Misc updates to README: - - Document missing variables - - Remove outdated variables - - Revamp and rewrite major portions of the README - - Added a table of content to make the content navigable - -## 0.32.0 - -### Improvements - -- Create and mount emptyDir volumes for `/tmp` and `/kong_prefix` to allow - for read-only root filesystem securityContexts and PodSecurityPolicys. -- Use read-only mounts for custom plugin volumes. -- Update stock PodSecurityPolicy to allow emptyDir access. -- Override the standard `/usr/local/kong` prefix to the mounted emptyDir - at `/kong_prefix` in `.Values.env`. -- Add securityContext injection points to template. By default, - it sets Kong pods to run with UID 1000. - -### Fixes - -- Correct behavior for the Vitals toggle. - Vitals defaults to on in all current Kong Enterprise releases, and - the existing template only created the Vitals environment variable - if `.Values.enterprise.enabled == true`. Inverted template to create - it (and set it to "off") if that setting is instead disabled. -- Correct an issue where custom plugin configurations would block Kong - from starting. - -## 0.31.0 - -### Breaking changes - -- Admin Service is disabled by default (`admin.enabled`) -- Default for `proxy.type` has been changed to `LoadBalancer` - -### New features - -- Update default version of Kong to 1.4 -- Update default version of Ingress Controller to 0.6.2 -- Add support to disable kong-admin service via `admin.enabled` flag. - -## 0.31.2 - -### Fixes - -- Do not remove white space between documents when rendering - `migrations-pre-upgrade.yaml` - -## 0.30.1 - -### New Features - -- Add support for specifying Proxy service ClusterIP - -## 0.30.0 - -### Breaking changes - -- `admin_gui_auth_conf_secret` is now required for Kong Manager - authentication methods other than `basic-auth`. - Users defining values for `admin_gui_auth_conf` should migrate them to - an externally-defined secret with a key of `admin_gui_auth_conf` and - reference the secret name in `admin_gui_auth_conf_secret`. - -## 0.29.0 - -### New Features - -- Add support for specifying Ingress Controller environment variables. - -## 0.28.0 - -### New Features - -- Added support for the Validating Admission Webhook with the Ingress Controller. - -## 0.27.2 - -### Fixes - -- Do not create a ServiceAccount if it is not necessary. -- If a configuration change requires creating a ServiceAccount, - create a temporary ServiceAccount to allow pre-upgrade tasks to - complete before the regular ServiceAccount is created. - -## 0.27.1 - -### Documentation updates -- Retroactive changelog update for 0.24 breaking changes. - -## 0.27.0 - -### Breaking changes - -- DB-less mode is enabled by default. -- Kong is installed as an Ingress Controller for the cluster by default. - -## 0.25.0 - -### New features - -- Add support for PodSecurityPolicy -- Require creation of a ServiceAccount - -## 0.24.0 - -### Breaking changes - -- The configuration format for ingresses in values.yaml has changed. -Previously, all ingresses accepted an array of hostnames, and would create -ingress rules for each. Ingress configuration for services other than the proxy -now accepts a single hostname, which allows simpler TLS configuration and -automatic population of `admin_api_uri` and similar settings. Configuration for -the proxy ingress is unchanged, but its documentation now accurately reflects -the TLS configuration needed. diff --git a/manifests/helm/kong/2.46.0/CUSTOM-README.md b/manifests/helm/kong/2.46.0/CUSTOM-README.md deleted file mode 100644 index ee2cc5d..0000000 --- a/manifests/helm/kong/2.46.0/CUSTOM-README.md +++ /dev/null @@ -1,225 +0,0 @@ - -# Kong Ingress Controller 배포 - -## 1. 배포 방법 - -### 1) 배포시 주의 사항 - -- 배포 전 k8s service의 LoadBalancer를 사용할 수 있는지 확인 필요. -- cert-manager가 배포되었는지 확인 필요 - -### 2) 배포 방법 - -``` sh -git clone https://github.com/paasup/dip-catalog.git -cd charts/kong -helm upgrade kong ./ -f custom-values.yaml --install -n kong --create-namespace -``` - - - -## 2. custom-values.yaml 설명 - -### 1) Pod 설정 - - -| Name | 설명 | 기본값 | -| ---------------------- | ------------------------------------------------------------ | ------ | -| `image.repository` |이미지 설정. 커스텀 플러그인이 설치된 이미지를 사용.|`"paasup/kong-oidc-keycloak-authz"`| -| `image.tag` | 이미지 태그 설정 | "3.4.0-0.1.0" | -| `deployment.kong.enabled` | Kong의 사용 여부 설정.
'false'로 설정 시 `ingressController.enable=ture`로 설정해야함 | 'true' | -| `deployment.daemonset` | 배포되는 kong의 리소스 타입을 설정.
'true' : daemonset, 'false': deployment | "false" | - - - -- `proxy` 컨테이너의 TimeZone 설정 - - ``` yaml - deployment: - # proxy 컨테이너의 timezone 설정 - # pod가 배포될 노드의 localtime 정보를 마운트, 노드의 해당 경로에 파일이 있는지 확인 필요. - userDefinedVolumeMounts: - - name: tz-config - mountPath: /etc/localtime - userDefinedVolumes: - - name: tz-config - hostPath: - path: /usr/share/zoneinfo/Asia/Seoul - ``` - - - -### 2) Kong 서비스 설정 - -- `admin`, `manager`의 ingress 설정에 domain 정보 변경이 필요하다. - `admin`, `manager`는 같은 도메인을 사용하고 path로 서비스를 구분한다. - -``` yaml -# Kong proxy 서비스 설정 -proxy: - enabled: true - type: LoadBalancer - ingress: - enable: false - -# Kong admin API 서비스 설정 -admin: - annotations: - konghq.com/protocol: https - enabled: true - type: ClusterIP - ingress: - enabled: true - annotations: - konghq.com/https-redirect-status-code: "301" - konghq.com/protocols: https - konghq.com/strip-path: "true" - hostname: kong.example.org # 도메인 변경 필요 - ingressClassName: kong - path: /api - # certificate 설정을 이용해 생성된 tls secret 이름을 설정 - tls: kong-kong-admin-cert - -# Kong Manager(UI) 서비스 설정 -manager: - enabled: true - type: ClusterIP - annotations: - konghq.com/protocol: https - http: - enabled: false - ingress: - enabled: true - annotations: - konghq.com/https-redirect-status-code: "301" - hostname: kong.example.org # 도메인 변경 필요 - ingressClassName: kong - path: / - # certificate 설정을 이용해 생성된 tls secret 이름을 설정 - tls: kong-kong-admin-cert -``` - - - -### 3) 인증서 생성 설정 - -- kong 서비스의 Ingress에서 사용할 인증서를 생성한다. - -- Cert-manager가 설치되어 있어야 사용 가능하다. - 그리고 `ClusterIssuer`도 생성되어 있어야 하고 생성되어 있는 `ClusterIssuer`에 따라 values.yaml 값을 수정해야 한다. - -- 인증서는 `kong admin`과 `kong manager`에서 사용하고 있고 admin 인증서를 생성하여 같이 사용한다. - - - ``` yaml - certificates: - enabled: true - clusterIssuer: selfsigned-issuer # 배포될 issuer에 따라 설졍 변경 필요. - admin: - enabled: true - commonName: kong.example.org # 도메인 변경 필요 - portal: - enabled: false - proxy: - enabled: false - cluster: - enabled: false - ``` - - - -### 4) Kong Configuration 설정 - -- Kong configuration은 환경변수를 추가하여 설정한다. -- 내장 DB 설정에 맞춰 설정해야 한다. - 외장 DB를 사용할 경우 설정 변경이 필요하다. - -``` yaml -env: - admin_error_log: /dev/stdout - admin_gui_access_log: /dev/stdout - admin_gui_error_log: /dev/stdout - admin_access_log: /dev/stdout - cluster_data_plane_purge_delay: 60 - cluster_listen: 0.0.0.0:8005 - cluster_telemetry_listen: 0.0.0.0:8006 - log_level: info - lua_package_path: /opt/?.lua;; - nginx_worker_processes: "2" - database: postgres - pg_database: kong - pg_host: kong-postgresql.kong.svc.cluster.local - pg_ssl: "off" - pg_ssl_verify: "off" - pg_user: kong - pg_password: password # kong에서 사용할 db 사용자의 패스워드로 변경. - plugins: bundled, oidc, keycloak-authz - prefix: /kong_prefix/ - proxy_access_log: /dev/stdout - proxy_error_log: /dev/stdout - proxy_stream_access_log: /dev/stdout - proxy_stream_error_log: /dev/stdout - status_listen: 0.0.0.0:8100 - trusted_ips: 0.0.0.0/0,::/0 -``` - - - -### 5) Ingress Controller 설정 - -``` yaml -ingressController: - enabled: true - image: - repository: kong/kubernetes-ingress-controller - tag: "3.3" # kong 3.4 버전을 지원하는 최신 ingress conroller 버전 - env: - kong_admin_filter_tag: ingress_controller_kong - kong_admin_tls_skip_verify: true - kong_admin_url: https://localhost:8444 - publish_service: kong/kong-kong-proxy # {namespace}/{kong-proxy-service}으로 변경 - - # ingress-controller 컨테이너의 timezone 설정 - customEnv: - TZ: "Asia/Seoul" -``` - - - -### 6) 내장 postgresql - -- 해당 설정에 따라서 `env`에 postgresql 연결정보를 수정해야 한다. - -```yaml -postgresql: - enabled: true - auth: - database: kong - username: kong - password: password -``` - -### 7) proxy 서비스 -#### 7.1) Loadbalancer 사용 -- ingress 서비스를 proxy가 사용하는 service의 타입을 LoadBalancer로 배포하여 서비스를 제공한다. -``` yaml -proxy: - enabled: true - type: LoadBalancer - ingress: - enable: false -``` -#### 7.2) host port 사용 - -- ingress 서비스를 위해 proxy의 80, 443을 worker node의 80, 443과 바인드하여 서비스를 제공한다. -``` yaml -proxy: - enabled: true - type: ClusterIP - ingress: - enable: false - http: - hostPort: 80 - tls: - hostPort: 443 -``` \ No newline at end of file diff --git a/manifests/helm/kong/2.46.0/Chart.lock b/manifests/helm/kong/2.46.0/Chart.lock deleted file mode 100644 index 88cd736..0000000 --- a/manifests/helm/kong/2.46.0/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: postgresql - repository: https://charts.bitnami.com/bitnami - version: 11.9.13 -digest: sha256:051285066cef2799e39e2953c4abd405c36510a09e9e1bd1833a29224daffddb -generated: "2022-12-19T11:56:46.951582785-08:00" diff --git a/manifests/helm/kong/2.46.0/Chart.yaml b/manifests/helm/kong/2.46.0/Chart.yaml deleted file mode 100644 index 5489f99..0000000 --- a/manifests/helm/kong/2.46.0/Chart.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: v2 -appVersion: "3.8" -dependencies: -- condition: postgresql.enabled - name: postgresql - repository: https://charts.bitnami.com/bitnami - version: 11.9.13 -description: The Cloud-Native Ingress and API-management -home: https://konghq.com/ -icon: https://s3.amazonaws.com/downloads.kong/universe/assets/icon-kong-inc-large.png -maintainers: -- email: team-k8s@konghq.com - name: team-k8s-bot -name: kong -sources: -- https://github.com/Kong/charts/tree/main/charts/kong -version: 2.46.0 diff --git a/manifests/helm/kong/2.46.0/FAQs.md b/manifests/helm/kong/2.46.0/FAQs.md deleted file mode 100644 index 847cb63..0000000 --- a/manifests/helm/kong/2.46.0/FAQs.md +++ /dev/null @@ -1,139 +0,0 @@ -# Frequently Asked Questions (FAQs) - -Despite the title, this is more a list of common problems. - -#### Kong cannot connect to a fresh Postgres install and fails to start - -If Kong is reporting that it cannot connect to Postgres because of an invalid -password on a fresh install, you likely have a leftover PersistentVolume from a -previous install using the same name. You should delete your install, delete -the associated PersistentVolumeClaim, and install again. - -Postgres PVCs [are not deleted when the chart install is -deleted](https://docs.bitnami.com/kubernetes/faq/troubleshooting/troubleshooting-helm-chart-issues/#persistence-volumes-pvs-retained-from-previous-releases), -and will be reused by subsequent installs if still present. Since the `kong` -user password is written to disk during database initialization only, that old -user's password is expected, not the new user's. - -PVC names use the pattern `data--postgresql-`. If -you named your install `foo` and did not increase the Postgres replica count, -you will have a single `data-foo-postgresql-0` PVC that needs to be deleted: - -``` -kubectl delete pvc data-foo-postgresql-0 -``` - -If you use a workflow that frequently deletes and re-creates installs, you -should make sure to delete PVCs when you delete the release: - -``` -helm delete foo; kubectl delete pvc data-foo-postgresql-0 -``` - -#### Upgrading a release fails due to missing ServiceAccount - -When upgrading a release, some configuration changes result in this error: - -``` -Error creating: pods "releasename-kong-pre-upgrade-migrations-" is forbidden: error looking up service account releasename-kong: serviceaccount "releasename-kong" not found -``` - -Enabling the ingress controller or PodSecurityPolicy requires that the Kong -chart also create a ServiceAccount. When upgrading from a configuration that -previously had neither of these features enabled, the pre-upgrade-migrations -Job attempts to use this ServiceAccount before it is created. It is [not -possible to easily handle this case automatically](https://github.com/Kong/charts/pull/31). - -Users encountering this issue should temporarily modify their -[pre-upgrade-migrations template](https://github.com/Kong/charts/blob/main/charts/kong/templates/migrations-pre-upgrade.yaml), -adding the following at the bottom: - -``` -{{ if or .Values.podSecurityPolicy.enabled (and .Values.ingressController.enabled .Values.ingressController.serviceAccount.create) -}} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "kong.serviceAccountName" . }} - namespace: {{ template "kong.namespace" . }} - annotations: - "helm.sh/hook": pre-upgrade - "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -{{- end -}} -``` - -Upgrading with this in place will create a temporary service account before -creating the actual service account. After this initial upgrade, users must -revert to the original pre-upgrade migrations template, as leaving the -temporary ServiceAccount template in place will [cause permissions issues on -subsequent upgrades](https://github.com/Kong/charts/issues/30). - -#### Running "helm upgrade" fails because of old init-migrations Job - -When running `helm upgrade`, the upgrade fails and Helm reports an error -similar to the following: - -``` -Error: UPGRADE FAILED: cannot patch "RELEASE-NAME-kong-init-migrations" with -kind Job: Job.batch "RELEASE-NAME-kong-init-migrations" is invalid ... field -is immutable -``` - -This occurs if a `RELEASE-NAME-kong-init-migrations` Job is left over from a -previous `helm install` or `helm upgrade`. Deleting it with -`kubectl delete job RELEASE-NAME-kong-init-migrations` will allow the upgrade -to proceed. Chart versions greater than 1.5.0 delete the job automatically. - -#### DB-backed instances do not start when deployed within a service mesh - -Service meshes, such as Istio and Kuma, if deployed in a mode that injects -a sidecar to Kong, don't make the mesh available to `InitContainer`s, -because the sidecar starts _after_ all `InitContainer`s finish. - -By default, this chart uses init containers to ensure that the database is -online and has migrations applied before starting Kong. This provides for a -smoother startup, but isn't compatible with service mesh sidecar requirements -if Kong is to access the database through the mesh. - -Setting `waitImage.enabled=false` in values.yaml disables these init containers -and resolves this issue. However, during the initial install, your Kong -Deployment will enter the CrashLoopBackOff state while waiting for migrations -to complete. It will eventually exit this state and enter Running as long as -there are no issues finishing migrations, usually within 2 minutes. - -If your Deployment is stuck in CrashLoopBackoff for longer, check the init -migrations Job logs to see if it is unable to connect to the database or unable -to complete migrations for some other reason. Resolve any issues you find, -delete the release, and attempt to install again. - -#### Kong fails to start after `helm upgrade` when Postgres is used - -As of Kong chart 2.8, this issue is no longer present. 2.8 updates the Postgres -sub-chart to a version that checks for existing password Secrets and leaves -them as-is rather than overwriting them. - -You may be running into this issue: https://github.com/helm/charts/issues/12575. -This issue is caused due to: https://github.com/helm/helm/issues/3053. - -The problem that happens is that Postgres database has the old password but -the new secret has a different password, which is used by Kong, and password -based authentication fails. - -The solution to the problem is to specify a password to the `postgresql` chart. -This is to ensure that the password is not generated randomly but is set to -the same one that is user-provided on each upgrade. - -The Postgres chart provides [two options](https://github.com/bitnami/charts/tree/master/bitnami/postgresql#postgresql-common-parameters) -for setting a password: - -- `auth.password` sets a password directly in values.yaml, in cleartext. This - is fine if you are using the instance for testing and have no security - concerns. -- `auth.existingSecret` specifies a Secret that contains [specific keys](https://github.com/bitnami/charts/blob/a6146a1ed392c8683c30b21e3fef905d86b0d2d6/bitnami/postgresql/values.yaml#L134-L143). - This should be used if you need to properly secure the Postgres instance. - -If you have already upgraded, the old password is lost. You will need to -delete the Helm release and the Postgres PersistentVolumeClaim before -re-installing with a non-random password. diff --git a/manifests/helm/kong/2.46.0/README.md b/manifests/helm/kong/2.46.0/README.md deleted file mode 100644 index 62425e1..0000000 --- a/manifests/helm/kong/2.46.0/README.md +++ /dev/null @@ -1,1245 +0,0 @@ -## Kong for Kubernetes - -[Kong for Kubernetes](https://github.com/Kong/kubernetes-ingress-controller) -is an open-source Ingress Controller for Kubernetes that offers -API management capabilities with a plugin architecture. - -This chart bootstraps all the components needed to run Kong on a -[Kubernetes](http://kubernetes.io) cluster using the -[Helm](https://helm.sh) package manager. - -## TL;DR; - -```bash -helm repo add kong https://charts.konghq.com -helm repo update - -helm install kong/kong --generate-name -``` - -## Table of contents - -- [Kong for Kubernetes](#kong-for-kubernetes) -- [TL;DR;](#tldr) -- [Table of contents](#table-of-contents) -- [Prerequisites](#prerequisites) -- [Install](#install) -- [Uninstall](#uninstall) -- [FAQs](#faqs) -- [Kong Enterprise](#kong-enterprise) -- [Deployment Options](#deployment-options) - - [Database](#database) - - [DB-less deployment](#db-less-deployment) - - [Using the Postgres sub-chart](#using-the-postgres-sub-chart) - - [Postgres sub-chart considerations for OpenShift](#postgres-sub-chart-considerations-for-openshift) - - [Runtime package](#runtime-package) - - [Configuration method](#configuration-method) - - [Separate admin and proxy nodes](#separate-admin-and-proxy-nodes) - - [Standalone controller nodes](#standalone-controller-nodes) - - [Hybrid mode](#hybrid-mode) - - [Certificates](#certificates) - - [Control plane node configuration](#control-plane-node-configuration) - - [Data plane node configuration](#data-plane-node-configuration) - - [Cert Manager Integration](#cert-manager-integration) - - [CRD management](#crd-management) - - [InitContainers](#initcontainers) - - [HostAliases](#hostaliases) - - [Sidecar Containers](#sidecar-containers) - - [Migration Sidecar Containers](#migration-sidecar-containers) - - [User Defined Volumes](#user-defined-volumes) - - [User Defined Volume Mounts](#user-defined-volume-mounts) - - [Removing cluster-scoped permissions](#removing-cluster-scoped-permissions) - - [Using a DaemonSet](#using-a-daemonset) - - [Using dnsPolicy and dnsConfig](#using-dnspolicy-and-dnsconfig) - - [Example configurations](#example-configurations) -- [Configuration](#configuration) - - [Kong parameters](#kong-parameters) - - [Kong Service Parameters](#kong-service-parameters) - - [Admin Service mTLS](#admin-service-mtls) - - [Stream listens](#stream-listens) - - [Ingress Controller Parameters](#ingress-controller-parameters) - - [The `env` section](#the-env-section) - - [The `customEnv` section](#the-customenv-section) - - [The `gatewayDiscovery` section](#the-gatewaydiscovery-section) - - [Configuration](#configuration-1) - - [General Parameters](#general-parameters) - - [The `env` section](#the-env-section-1) - - [The `customEnv` section](#the-customenv-section-1) - - [The `extraLabels` section](#the-extralabels-section) -- [Kong Enterprise Parameters](#kong-enterprise-parameters) - - [Overview](#overview) - - [Prerequisites](#prerequisites-1) - - [Kong Enterprise License](#kong-enterprise-license) - - [Kong Enterprise Docker registry access](#kong-enterprise-docker-registry-access) - - [Service location hints](#service-location-hints) - - [RBAC](#rbac) - - [Sessions](#sessions) - - [Email/SMTP](#emailsmtp) -- [Prometheus Operator integration](#prometheus-operator-integration) -- [Argo CD Considerations](#argo-cd-considerations) -- [Seeking help](#seeking-help) - -## Prerequisites - -- Kubernetes 1.17+. Older chart releases support older Kubernetes versions. - Refer to the [supported version matrix](https://docs.konghq.com/kubernetes-ingress-controller/latest/references/version-compatibility/#kubernetes) - and the [chart changelog](https://github.com/Kong/charts/blob/main/charts/kong/CHANGELOG.md) - for information about the default chart controller versions and Kubernetes - versions supported by controller releases. -- PV provisioner support in the underlying infrastructure if persistence - is needed for Kong datastore. - -## Install - -To install Kong: - -```bash -helm repo add kong https://charts.konghq.com -helm repo update - -helm install kong/kong --generate-name -``` - -## Uninstall - -To uninstall/delete a Helm release `my-release`: - -```bash -helm delete my-release -``` - -The command removes all the Kubernetes components associated with the -chart and deletes the release. - -> **Tip**: List all releases using `helm list` - -## FAQs - -Please read the -[FAQs](https://github.com/Kong/charts/blob/main/charts/kong/FAQs.md) -document. - -## Kong Enterprise - -If using Kong Enterprise, several additional steps are necessary before -installing the chart: - -- Set `enterprise.enabled` to `true` in `values.yaml` file. -- Update values.yaml to use a Kong Enterprise image. -- Satisfy the two prerequisites below for - [Enterprise License](#kong-enterprise-license) and - [Enterprise Docker Registry](#kong-enterprise-docker-registry-access). -- (Optional) [set a `password` environment variable](#rbac) to create the - initial super-admin. Though not required, this is recommended for users that - wish to use RBAC, as it cannot be done after initial setup. - -Once you have these set, it is possible to install Kong Enterprise. - -Please read through -[Kong Enterprise considerations](#kong-enterprise-parameters) -to understand all settings that are enterprise specific. - -## Deployment Options - -Kong is a highly configurable piece of software that can be deployed -in a number of different ways, depending on your use-case. - -All combinations of various runtimes, databases and configuration methods are -supported by this Helm chart. -The recommended approach is to use the Ingress Controller based configuration -along-with DB-less mode. - -Following sections detail on various high-level architecture options available: - -### Database - -Kong can run with or without a database (DB-less). By default, this chart -installs Kong without a database. - -You can set the database the `env.database` parameter. For more details, please -read the [env](#the-env-section) section. - -#### DB-less deployment - -When deploying Kong in DB-less mode(`env.database: "off"`) -and without the Ingress Controller(`ingressController.enabled: false`), -you have to provide a [declarative configuration](https://docs.konghq.com/gateway-oss/latest/db-less-and-declarative-config/#the-declarative-configuration-format) for Kong to run. -You can provide an existing ConfigMap -(`dblessConfig.configMap`) or Secret (`dblessConfig.secret`) or place the whole -configuration into `values.yaml` (`dblessConfig.config`) parameter. See the -example configuration in the default values.yaml for more details. You can use -`--set-file dblessConfig.config=/path/to/declarative-config.yaml` in Helm -commands to substitute in a complete declarative config file. - -Note that externally supplied ConfigMaps are not hashed or tracked in deployment annotations. -Subsequent ConfigMap updates will require user-initiated new deployment rollouts -to apply the new configuration. You should run `kubectl rollout restart deploy` -after updating externally supplied ConfigMap content. - -#### Using the Postgres sub-chart - -The chart can optionally spawn a Postgres instance using [Bitnami's Postgres -chart](https://github.com/bitnami/charts/blob/master/bitnami/postgresql/README.md) -as a sub-chart. Set `postgresql.enabled=true` to enable the sub-chart. Enabling -this will auto-populate Postgres connection settings in Kong's environment. - -The Postgres sub-chart is best used to quickly provision temporary environments -without installing and configuring your database separately. For longer-lived -environments, we recommend you manage your database outside the Kong Helm -release. - -##### Postgres sub-chart considerations for OpenShift - -Due to the default `securityContexts` in the postgres sub-chart, you will need to add the following values to the `postgresql` section to get postgres running on OpenShift: - -```yaml - volumePermissions: - enabled: false - securityContext: - runAsUser: "auto" - primary: - containerSecurityContext: - enabled: false - podSecurityContext: - enabled: false -``` - -### Runtime package - -There are three different packages of Kong that are available: - -- **Kong Gateway**\ - This is the [Open-Source](https://github.com/kong/kong) offering. It is a - full-blown API Gateway and Ingress solution with a wide-array of functionality. - When Kong Gateway is combined with the Ingress based configuration method, - you get Kong for Kubernetes. This is the default deployment for this Helm - Chart. -- **Kong Enterprise K8S**\ - This package builds up on top of the Open-Source Gateway and bundles in all - the Enterprise-only plugins as well. - When Kong Enterprise K8S is combined with the Ingress based - configuration method, you get Kong for Kubernetes Enterprise. - This package also comes with 24x7 support from Kong Inc. -- **Kong Enterprise**\ - This is the full-blown Enterprise package which packs with itself all the - Enterprise functionality like Manager, Portal, Vitals, etc. - This package can't be run in DB-less mode. - -The package to run can be changed via `image.repository` and `image.tag` -parameters. If you would like to run the Enterprise package, please read -the [Kong Enterprise Parameters](#kong-enterprise-parameters) section. - -### Configuration method - -Kong can be configured via two methods: -- **Ingress and CRDs**\ - The configuration for Kong is done via `kubectl` and Kubernetes-native APIs. - This is also known as Kong Ingress Controller or Kong for Kubernetes and is - the default deployment pattern for this Helm Chart. The configuration - for Kong is managed via Ingress and a few - [Custom Resources](https://docs.konghq.com/kubernetes-ingress-controller/latest/concepts/custom-resources). - For more details, please read the - [documentation](https://docs.konghq.com/kubernetes-ingress-controller/) - on Kong Ingress Controller. - To configure and fine-tune the controller, please read the - [Ingress Controller Parameters](#ingress-controller-parameters) section. -- **Admin API**\ - This is the traditional method of running and configuring Kong. - By default, the Admin API of Kong is not exposed as a Service. This - can be controlled via `admin.enabled` and `env.admin_listen` parameters. - -### Separate admin and proxy nodes - -*Note: although this section is titled "Separate admin and proxy nodes", this -split release technique is generally applicable to any deployment with -different types of Kong nodes. Separating Admin API and proxy nodes is one of -the more common use cases for splitting across multiple releases, but you can -also split releases for split proxy and Developer Portal nodes, multiple groups -of proxy nodes with separate listen configurations for network segmentation, etc. -However, it does not apply to hybrid mode, as only the control plane release -interacts with the database.* - -Users may wish to split their Kong deployment into multiple instances that only -run some of Kong's services (i.e. you run `helm install` once for every -instance type you wish to create). - -To disable Kong services on an instance, you should set `SVC.enabled`, -`SVC.http.enabled`, `SVC.tls.enabled`, and `SVC.ingress.enabled` all to -`false`, where `SVC` is `proxy`, `admin`, `manager`, `portal`, or `portalapi`. - -The standard chart upgrade automation process assumes that there is only a -single Kong release in the Kong cluster, and runs both `migrations up` and -`migrations finish` jobs. To handle clusters split across multiple releases, -you should: -1. Upgrade one of the releases with `helm upgrade RELEASENAME -f values.yaml - --set migrations.preUpgrade=true --set migrations.postUpgrade=false`. -2. Upgrade all but one of the remaining releases with `helm upgrade RELEASENAME - -f values.yaml --set migrations.preUpgrade=false --set - migrations.postUpgrade=false`. -3. Upgrade the final release with `helm upgrade RELEASENAME -f values.yaml - --set migrations.preUpgrade=false --set migrations.postUpgrade=true`. - -This ensures that all instances are using the new Kong package before running -`kong migrations finish`. - -Users should note that Helm supports supplying multiple values.yaml files, -allowing you to separate shared configuration from instance-specific -configuration. For example, you may have a shared values.yaml that contains -environment variables and other common settings, and then several -instance-specific values.yamls that contain service configuration only. You can -then create releases with: - -```bash -helm install proxy-only -f shared-values.yaml -f only-proxy.yaml kong/kong -helm install admin-only -f shared-values.yaml -f only-admin.yaml kong/kong -``` - -### Standalone controller nodes - -The chart can deploy releases that contain the controller only, with no Kong -container, by setting `deployment.kong.enabled: false` in values.yaml. There -are several controller settings that must be populated manually in this -scenario and several settings that are useful when using multiple controllers: - -* `ingressController.env.kong_admin_url` must be set to the Kong Admin API URL. - If the Admin API is exposed by a service in the cluster, this should look - something like `https://my-release-kong-admin.kong-namespace.svc:8444` -* `ingressController.env.publish_service` must be set to the Kong proxy - service, e.g. `namespace/my-release-kong-proxy`. -* `ingressController.ingressClass` should be set to a different value for each - instance of the controller. -* `ingressController.env.kong_admin_filter_tag` should be set to a different value - for each instance of the controller. -* If using Kong Enterprise, `ingressController.env.kong_workspace` can - optionally create configuration in a workspace other than `default`. - -Standalone controllers require a database-backed Kong instance, as DB-less mode -requires that a single controller generate a complete Kong configuration. - -### Hybrid mode - -Kong supports [hybrid mode -deployments](https://docs.konghq.com/2.0.x/hybrid-mode/) as of Kong 2.0.0 and -[Kong Enterprise 2.1.0](https://docs.konghq.com/enterprise/2.1.x/deployment/hybrid-mode/). -These deployments split Kong nodes into control plane (CP) nodes, which provide -the admin API and interact with the database, and data plane (DP) nodes, which -provide the proxy and receive configuration from control plane nodes. - -You can deploy hybrid mode Kong clusters by [creating separate releases for each node -type](#separate-admin-and-proxy-nodes), i.e. use separate control and data -plane values.yamls that are then installed separately. The [control -plane](#control-plane-node-configuration) and [data -plane](#data-plane-node-configuration) configuration sections below cover the -values.yaml specifics for each. - -Cluster certificates are not generated automatically. You must [create a -certificate and key pair](#certificates) for intra-cluster communication. - -When upgrading the Kong version, you must [upgrade the control plane release -first and then upgrade the data plane release](https://docs.konghq.com/gateway/latest/plan-and-deploy/hybrid-mode/#version-compatibility). - -#### Certificates - -> This example shows how to use Kong Hybrid mode with `cluster_mtls: shared`. -> For an example of `cluster_mtls: pki` see the [hybrid-cert-manager example](https://github.com/Kong/charts/blob/main/charts/kong/example-values/hybrid-cert-manager/) - -Hybrid mode uses TLS to secure the CP/DP node communication channel, and -requires certificates for it. You can generate these either using `kong hybrid -gen_cert` on a local Kong installation or using OpenSSL: - -```bash -openssl req -new -x509 -nodes -newkey ec:<(openssl ecparam -name secp384r1) \ - -keyout /tmp/cluster.key -out /tmp/cluster.crt \ - -days 1095 -subj "/CN=kong_clustering" -``` - -You must then place these certificates in a Secret: - -```bash -kubectl create secret tls kong-cluster-cert --cert=/tmp/cluster.crt --key=/tmp/cluster.key -``` - -#### Control plane node configuration - -You must configure the control plane nodes to mount the certificate secret on -the container filesystem is serve it from the cluster listen. In values.yaml: - -```yaml -secretVolumes: -- kong-cluster-cert -``` - -```yaml -env: - role: control_plane - cluster_cert: /etc/secrets/kong-cluster-cert/tls.crt - cluster_cert_key: /etc/secrets/kong-cluster-cert/tls.key -``` - -Furthermore, you must enable the cluster listen and Kubernetes Service, and -should typically disable the proxy: - -```yaml -cluster: - enabled: true - tls: - enabled: true - servicePort: 8005 - containerPort: 8005 - -proxy: - enabled: false -``` - -Enterprise users with Vitals enabled must also enable the cluster telemetry -service: - -```yaml -clustertelemetry: - enabled: true - tls: - enabled: true - servicePort: 8006 - containerPort: 8006 -``` - -If using the ingress controller, you must also specify the DP proxy service as -its publish target to keep Ingress status information up to date: - -``` -ingressController: - env: - publish_service: hybrid/example-release-data-kong-proxy -``` - -Replace `hybrid` with your DP nodes' namespace and `example-release-data` with -the name of the DP release. - -#### Data plane node configuration - -Data plane configuration also requires the certificate and `role` -configuration, and the database should always be set to `off`. You must also -trust the cluster certificate and indicate what hostname/port Kong should use -to find control plane nodes. - -Though not strictly required, you should disable the admin service (it will not -work on DP nodes anyway, but should be disabled to avoid creating an invalid -Service resource). - -```yaml -secretVolumes: -- kong-cluster-cert -``` - -```yaml -admin: - enabled: false -``` - -```yaml -env: - role: data_plane - database: "off" - cluster_cert: /etc/secrets/kong-cluster-cert/tls.crt - cluster_cert_key: /etc/secrets/kong-cluster-cert/tls.key - lua_ssl_trusted_certificate: /etc/secrets/kong-cluster-cert/tls.crt - cluster_control_plane: control-plane-release-name-kong-cluster.hybrid.svc.cluster.local:8005 - cluster_telemetry_endpoint: control-plane-release-name-kong-clustertelemetry.hybrid.svc.cluster.local:8006 # Enterprise-only -``` - -Note that the `cluster_control_plane` value will differ depending on your -environment. `control-plane-release-name` will change to your CP release name, -`hybrid` will change to whatever namespace it resides in. See [Kubernetes' -documentation on Service -DNS](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/) -for more detail. - -If you use multiple Helm releases to manage different data plane configurations -attached to the same control plane, setting the `deployment.hostname` field -will help you keep track of which is which in the `/clustering/data-plane` -endpoint. - -### Cert Manager Integration - -By default, Kong will create self-signed certificates on start for its TLS -listens if you do not provide your own. The chart can create -[cert-manager](https://cert-manager.io/docs/) Certificates for its Services and -configure them for you. To use this integration, install cert-manager, create -an issuer, set `certificates.enabled: true` in values.yaml, and set your issuer -name in `certificates.issuer` or `certificates.clusterIssuer` depending on the -issuer type. - -If you do not have an issuer available, you can install the example [self-signed ClusterIssuer](https://cert-manager.io/docs/configuration/selfsigned/#bootstrapping-ca-issuers) -and set `certificates.clusterIssuer: selfsigned-issuer` for testing. You -should, however, migrate to an issuer using a CA your clients trust for actual -usage. - -The `proxy`, `admin`, `portal`, and `cluster` subsections under `certificates` -let you choose hostnames, override issuers, set `subject` or set `privateKey` on a per-certificate basis for the -proxy, admin API and Manager, Portal and Portal API, and hybrid mode mTLS -services, respectively. - -To use hybrid mode, the control and data plane releases must use the same -issuer for their cluster certificates. - -### CRD management - -Earlier versions of this chart (<2.0) created CRDs associated with the ingress -controller as part of the release. This raised two challenges: - -- Multiple release of the chart would conflict with one another, as each would - attempt to create its own set of CRDs. -- Because deleting a CRD also deletes any custom resources associated with it, - deleting a release of the chart could destroy user configuration without - providing any means to restore it. - -Helm 3 introduced a simplified CRD management method that was safer, but -requires some manual work when a chart added or modified CRDs: CRDs are created -on install if they are not already present, but are not modified during -release upgrades or deletes. Our chart release upgrade instructions call out -when manual action is necessary to update CRDs. This CRD handling strategy is -recommended for most users. - -Some users may wish to manage their CRDs automatically. If you manage your CRDs -this way, we _strongly_ recommend that you back up all associated custom -resources in the event you need to recover from unintended CRD deletion. - -While Helm 3's CRD management system is recommended, there is no simple means -of migrating away from release-managed CRDs if you previously installed your -release with the old system (you would need to back up your existing custom -resources, delete your release, reinstall, and restore your custom resources -after). As such, the chart detects if you currently use release-managed CRDs -and continues to use the old CRD templates when using chart version 2.0+. If -you do (your resources will have a `meta.helm.sh/release-name` annotation), we -_strongly_ recommend that you back up all associated custom resources in the -event you need to recover from unintended CRD deletion. - -### InitContainers - -The chart is able to deploy initContainers along with Kong. This can be very -useful when there's a requirement for custom initialization. The -`deployment.initContainers` field in values.yaml takes an array of objects that -get appended as-is to the existing `spec.template.initContainers` array in the -kong deployment resource. - -### HostAliases - -The chart is able to inject host aliases into containers. This can be very useful -when it's required to resolve additional domain name which can't be looked-up -directly from dns server. The `deployment.hostAliases` field in values.yaml -takes an array of objects that set to `spec.template.hostAliases` field in the -kong deployment resource. - -### Sidecar Containers - -The chart can deploy additional containers along with the Kong and Ingress -Controller containers, sometimes referred to as "sidecar containers". This can -be useful to include network proxies or logging services along with Kong. The -`deployment.sidecarContainers` field in values.yaml takes an array of objects -that get appended as-is to the existing `spec.template.spec.containers` array -in the Kong deployment resource. - -### Migration Sidecar Containers - -In the same way sidecar containers are attached to the Kong and Ingress -Controller containers the chart can add sidecars to the containers that runs -the migrations. The -`migrations.sidecarContainers` field in values.yaml takes an array of objects -that get appended as-is to the existing `spec.template.spec.containers` array -in the pre-upgrade-migrations, post-upgrade-migrations and migration resrouces. -Keep in mind the containers should be finite and they should be terminated -with the migration containers, otherwise the migration could get the status -as finished and the deployment of the chart will reach the timeout. - -### User Defined Volumes - -The chart can deploy additional volumes along with Kong. This can be useful to -include additional volumes which required during iniatilization phase -(InitContainer). The `deployment.userDefinedVolumes` field in values.yaml -takes an array of objects that get appended as-is to the existing -`spec.template.spec.volumes` array in the kong deployment resource. - -### User Defined Volume Mounts - -The chart can mount user-defined volumes. The -`deployment.userDefinedVolumeMounts` and -`ingressController.userDefinedVolumeMounts` fields in values.yaml take an array -of object that get appended as-is to the existing -`spec.template.spec.containers[].volumeMounts` and -`spec.template.spec.initContainers[].volumeMounts` array in the kong deployment -resource. - -### Removing cluster-scoped permissions - -You can limit the controller's access to allow it to only watch specific -namespaces for namespaced resources. By default, the controller watches all -namespaces. Limiting access requires several changes to configuration: - -- Set `ingressController.watchNamespaces` to a list of namespaces you want to - watch. The chart will automatically generate roles for each namespace and - assign them to the controller's service account. -- Optionally set `ingressController.installCRDs=false` if your user role (the - role you use when running `helm install`, not the controller service - account's role) does not have access to get CRDs. By default, the chart - attempts to look up the controller CRDs for [a legacy behavior - check](#crd-management). - -### Using a DaemonSet - -Setting `deployment.daemonset: true` deploys Kong using a [DaemonSet -controller](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/) -instead of a Deployment controller. This runs a Kong Pod on every kubelet in -the Kubernetes cluster. For such configuration it may be desirable to configure -Pods to use the network of the host they run on instead of a dedicated network -namespace. The benefit of this approach is that the Kong can bind ports directly -to Kubernetes nodes' network interfaces, without the extra network translation -imposed by NodePort Services. It can be achieved by setting `deployment.hostNetwork: true`. - -### Using dnsPolicy and dnsConfig - -The chart able to inject custom DNS configuration into containers. This can be useful when you have EKS cluster with [NodeLocal DNSCache](https://kubernetes.io/docs/tasks/administer-cluster/nodelocaldns/) configured and attach AWS security groups directly to pod using [security groups for pods feature](https://docs.aws.amazon.com/eks/latest/userguide/security-groups-for-pods.html). - -### Example configurations - -Several example values.yaml are available in the -[example-values](https://github.com/Kong/charts/blob/main/charts/kong/example-values/) -directory. - -## Configuration - -### Kong parameters - -| Parameter | Description | Default | -| ---------------------------------- | ------------------------------------------------------------------------------------- | ------------------- | -| image.repository | Kong image | `kong` | -| image.tag | Kong image version | `3.5` | -| image.effectiveSemver | Semantic version to use for version-dependent features (if `tag` is not a semver) | | -| image.pullPolicy | Image pull policy | `IfNotPresent` | -| image.pullSecrets | Image pull secrets | `null` | -| replicaCount | Kong instance count. It has no effect when `autoscaling.enabled` is set to true | `1` | -| plugins | Install custom plugins into Kong via ConfigMaps or Secrets | `{}` | -| env | Additional [Kong configurations](https://getkong.org/docs/latest/configuration/) | | -| customEnv | Custom Environment variables without `KONG_` prefix | | -| envFrom | Populate environment variables from ConfigMap or Secret keys | | -| migrations.preUpgrade | Run "kong migrations up" jobs | `true` | -| migrations.postUpgrade | Run "kong migrations finish" jobs | `true` | -| migrations.annotations | Annotations for migration job pods | `{"sidecar.istio.io/inject": "false" | -| migrations.ttlSecondsAfterFinished | Automatically deletes completed pods after a specified time to clean up resources | | -| migrations.jobAnnotations | Additional annotations for migration jobs | `{}` | -| migrations.backoffLimit | Override the system backoffLimit | `{}` | -| waitImage.enabled | Spawn init containers that wait for the database before starting Kong | `true` | -| waitImage.repository | Image used to wait for database to become ready. Uses the Kong image if none set | | -| waitImage.tag | Tag for image used to wait for database to become ready | | -| waitImage.pullPolicy | Wait image pull policy | `IfNotPresent` | -| postgresql.enabled | Spin up a new postgres instance for Kong | `false` | -| dblessConfig.configMap | Name of an existing ConfigMap containing the `kong.yml` file. This must have the key `kong.yml`.| `` | -| dblessConfig.config | Yaml configuration file for the dbless (declarative) configuration of Kong | see in `values.yaml` | - -#### Kong Service Parameters - -The various `SVC.*` parameters below are common to the various Kong services -(the admin API, proxy, Kong Manager, the Developer Portal, and the Developer -Portal API) and define their listener configuration, K8S Service properties, -and K8S Ingress properties. Defaults are listed only if consistent across the -individual services: see values.yaml for their individual default values. - -`SVC` below can be substituted with each of: -* `proxy` -* `udpProxy` -* `admin` -* `manager` -* `portal` -* `portalapi` -* `cluster` -* `clustertelemetry` -* `status` - -`status` is intended for internal use within the cluster. Unlike other -services it cannot be exposed externally, and cannot create a Kubernetes -service or ingress. It supports the settings under `SVC.http` and `SVC.tls` -only. - -`cluster` is used on hybrid mode control plane nodes. It does not support the -`SVC.http.*` settings (cluster communications must be TLS-only) or the -`SVC.ingress.*` settings (cluster communication requires TLS client -authentication, which cannot pass through an ingress proxy). `clustertelemetry` -is similar, and used when Vitals is enabled on Kong Enterprise control plane -nodes. - -`udpProxy` is used for UDP stream listens (Kubernetes does not yet support -mixed TCP/UDP LoadBalancer Services). It _does not_ support the `http`, `tls`, -or `ingress` sections, as it is used only for stream listens. - -| Parameter | Description | Default | -|-----------------------------------|-------------------------------------------------------------------------------------------|--------------------------| -| SVC.enabled | Create Service resource for SVC (admin, proxy, manager, etc.) | | -| SVC.http.enabled | Enables http on the service | | -| SVC.http.servicePort | Service port to use for http | | -| SVC.http.containerPort | Container port to use for http | | -| SVC.http.nodePort | Node port to use for http | | -| SVC.http.hostPort | Host port to use for http | | -| SVC.http.parameters | Array of additional listen parameters | `[]` | -| SVC.http.appProtocol | `appProtocol` to be set in a Service's port. If left empty, no `appProtocol` will be set. | | -| SVC.tls.enabled | Enables TLS on the service | | -| SVC.tls.containerPort | Container port to use for TLS | | -| SVC.tls.servicePort | Service port to use for TLS | | -| SVC.tls.nodePort | Node port to use for TLS | | -| SVC.tls.hostPort | Host port to use for TLS | | -| SVC.tls.overrideServiceTargetPort | Override service port to use for TLS without touching Kong containerPort | | -| SVC.tls.parameters | Array of additional listen parameters | `["http2"]` | -| SVC.tls.appProtocol | `appProtocol` to be set in a Service's port. If left empty, no `appProtocol` will be set. | | -| SVC.type | k8s service type. Options: NodePort, ClusterIP, LoadBalancer | | -| SVC.clusterIP | k8s service clusterIP | | -| SVC.loadBalancerClass | loadBalancerClass to use for LoadBalancer provisionning | | -| SVC.loadBalancerSourceRanges | Limit service access to CIDRs if set and service type is `LoadBalancer` | `[]` | -| SVC.loadBalancerIP | Reuse an existing ingress static IP for the service | | -| SVC.externalIPs | IPs for which nodes in the cluster will also accept traffic for the servic | `[]` | -| SVC.externalTrafficPolicy | k8s service's externalTrafficPolicy. Options: Cluster, Local | | -| SVC.ingress.enabled | Enable ingress resource creation (works with SVC.type=ClusterIP) | `false` | -| SVC.ingress.ingressClassName | Set the ingressClassName to associate this Ingress with an IngressClass | | -| SVC.ingress.hostname | Ingress hostname | `""` | -| SVC.ingress.path | Ingress path. | `/` | -| SVC.ingress.pathType | Ingress pathType. One of `ImplementationSpecific`, `Exact` or `Prefix` | `ImplementationSpecific` | -| SVC.ingress.hosts | Slice of hosts configurations, including `hostname`, `path` and `pathType` keys | `[]` | -| SVC.ingress.tls | Name of secret resource or slice of `secretName` and `hosts` keys | | -| SVC.ingress.annotations | Ingress annotations. See documentation for your ingress controller for details | `{}` | -| SVC.ingress.labels | Ingress labels. Additional custom labels to add to the ingress. | `{}` | -| SVC.annotations | Service annotations | `{}` | -| SVC.labels | Service labels | `{}` | - -#### Admin Service mTLS - -On top of the common parameters listed above, the `admin` service supports parameters for mTLS client verification. -If any of `admin.tls.client.caBundle` or `admin.tls.client.secretName` are set, the admin service will be configured to -require mTLS client verification. If both are set, `admin.tls.client.caBundle` will take precedence. - -| Parameter | Description | Default | -|-----------------------------|---------------------------------------------------------------------------------------------|---------| -| admin.tls.client.caBundle | CA certificate to use for TLS verification of the Admin API client (PEM-encoded). | `""` | -| admin.tls.client.secretName | CA certificate secret name - must contain a `tls.crt` key with the PEM-encoded certificate. | `""` | - -#### Stream listens - -The proxy configuration additionally supports creating stream listens. These -are configured using an array of objects under `proxy.stream` and `udpProxy.stream`: - -| Parameter | Description | Default | -| ---------------------------------- | ------------------------------------------------------------------------------------- | ------------------- | -| protocol | The listen protocol, either "TCP" or "UDP" | | -| containerPort | Container port to use for a stream listen | | -| servicePort | Service port to use for a stream listen | | -| nodePort | Node port to use for a stream listen | | -| hostPort | Host port to use for a stream listen | | -| parameters | Array of additional listen parameters | `[]` | - -### Ingress Controller Parameters - -All of the following properties are nested under the `ingressController` -section of `values.yaml` file: - -| Parameter | Description | Default | -|--------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------| -| enabled | Deploy the ingress controller, rbac and crd | true | -| image.repository | Docker image with the ingress controller | kong/kubernetes-ingress-controller | -| image.tag | Version of the ingress controller | `3.4` | -| image.effectiveSemver | Version of the ingress controller used for version-specific features when image.tag is not a valid semantic version | | -| readinessProbe | Kong ingress controllers readiness probe | | -| livenessProbe | Kong ingress controllers liveness probe | | -| installCRDs | Legacy toggle for Helm 2-style CRD management. Should not be set [unless necessary due to cluster permissions](#removing-cluster-scoped-permissions). | false | -| env | Specify Kong Ingress Controller configuration via environment variables | | -| customEnv | Specify custom environment variables (without the CONTROLLER_ prefix) | | -| envFrom | Populate environment variables from ConfigMap or Secret keys | | -| ingressClass | The name of this controller's ingressClass | kong | -| ingressClassAnnotations | The ingress-class value for controller | kong | -| args | List of ingress-controller cli arguments | [] | -| watchNamespaces | List of namespaces to watch. Watches all namespaces if empty | [] | -| admissionWebhook.enabled | Whether to enable the validating admission webhook | true | -| admissionWebhook.failurePolicy | How unrecognized errors from the admission endpoint are handled (Ignore or Fail) | Ignore | -| admissionWebhook.filterSecrets | Limit the webhook to only Secrets with the appropriate KIC validation labels. | false | -| admissionWebhook.port | The port the ingress controller will listen on for admission webhooks | 8080 | -| admissionWebhook.address | The address the ingress controller will listen on for admission webhooks, if not 0.0.0.0 | | -| admissionWebhook.annotations | Annotations for the Validation Webhook Configuration | | -| admissionWebhook.certificate.provided | Use a provided certificate. When set to false, the chart will automatically generate a certificate. | false | -| admissionWebhook.certificate.secretName | Name of the TLS secret for the provided webhook certificate | | -| admissionWebhook.certificate.caBundle | PEM encoded CA bundle which will be used to validate the provided webhook certificate | | -| admissionWebhook.namespaceSelector | Add namespaceSelector to the webhook. Please go to [Kubernetes doc for the specs](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-namespaceselector) | | -| admissionWebhook.timeoutSeconds | Kubernetes `apiserver`'s timeout when running this webhook. Default: 10 seconds. | | -| userDefinedVolumes | Create volumes. Please go to Kubernetes doc for the spec of the volumes | | -| userDefinedVolumeMounts | Create volumeMounts. Please go to Kubernetes doc for the spec of the volumeMounts | | -| terminationGracePeriodSeconds | Sets the [termination grace period](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#hook-handler-execution) for Deployment pod | 30 | -| gatewayDiscovery.enabled | Enables Kong instance service discovery (for more details see [gatewayDiscovery section][gd_section]) | false | -| gatewayDiscovery.generateAdminApiService | Generate the admin API service name based on the release name (for more details see [gatewayDiscovery section][gd_section]) | false | -| gatewayDiscovery.adminApiService.namespace | The namespace of the Kong admin API service (for more details see [gatewayDiscovery section][gd_section]) | `.Release.Namespace` | -| gatewayDiscovery.adminApiService.name | The name of the Kong admin API service (for more details see [gatewayDiscovery section][gd_section]) | "" | -| konnect.enabled | Enable synchronisation of data plane configuration with Konnect Runtime Group | false | -| konnect.runtimeGroupID | Deprecated: Konnect Runtime Group's unique identifier. | | -| konnect.controlPlaneID | Konnect Control Plane's unique identifier. | | -| konnect.apiHostname | Konnect API hostname. Defaults to a production US-region. | us.kic.api.konghq.com | -| konnect.tlsClientCertSecretName | Name of the secret that contains Konnect Runtime Group's client TLS certificate. | konnect-client-tls | -| konnect.license.enabled | Enable automatic license provisioning for Gateways managed by Ingress Controller in Konnect mode. | false | -| adminApi.tls.client.enabled | Enable TLS client verification for the Admin API. By default, Helm will generate certificates automatically. | false | -| adminApi.tls.client.certProvided | Use user-provided certificates. If set to false, Helm will generate certificates. | false | -| adminApi.tls.client.secretName | Client TLS certificate/key pair secret name. Can be also set when `certProvided` is false to enforce a generated secret's name. | "" | -| adminApi.tls.client.caSecretName | CA TLS certificate/key pair secret name. Can be also set when `certProvided` is false to enforce a generated secret's name. | "" | - -[gd_section]: #the-gatewayDiscovery-section - -#### The `env` section -For a complete list of all configuration values you can set in the -`env` section, please read the Kong Ingress Controller's -[configuration document](https://docs.konghq.com/kubernetes-ingress-controller/latest/reference/cli-arguments/). - -#### The `customEnv` section - -The `customEnv` section can be used to configure all environment variables other than Ingress Controller configuration. -Any key value put under this section translates to environment variables. -Every key is upper-cased before setting the environment variable. - -An example: - -```yaml -kong: - ingressController: - customEnv: - TZ: "Europe/Berlin" -``` - -#### The `gatewayDiscovery` section - -Kong Ingress Controller v2.9 has introduced gateway discovery which allows -the controller to discover Gateway instances that it should configure using -an Admin API Kubernetes service. - -Using this feature requires a split release installation of Gateways and Ingress Controller. -For exemplar `values.yaml` files which use this feature please see: [examples README.md](./example-values/README.md). -or use the [`ingress` chart](../ingress/README.md) which can handle this for you. - -##### Configuration - -You'll be able to configure this feature through configuration section under -`ingressController.gatewayDiscovery`: - -- If `ingressController.gatewayDiscovery.enabled` is set to `false`: the ingress controller - will control a pre-determined set of Gateway instances based on Admin API URLs - (provided under the hood via `CONTROLLER_KONG_ADMIN_URL` environment variable). - -- If `ingressController.gatewayDiscovery.enabled` is set to `true`: the ingress controller - will dynamically locate Gateway instances by watching the specified Kubernetes - service. - (provided under the hood via `CONTROLLER_KONG_ADMIN_SVC` environment variable). - - The following admin API Service flags have to be present in order for gateway - discovery to work: - - - `ingressController.gatewayDiscovery.adminApiService.name` - - `ingressController.gatewayDiscovery.adminApiService.namespace` - - If you set `ingressController.gatewayDiscovery.generateAdminApiService` to `true`, - the chart will generate values for `name` and `namespace` based on the current release name and - namespace. This is useful when consuming the `kong` chart as a subchart. - -Additionally, you can control the addresses that are generated for your Gateways -via the `--gateway-discovery-dns-strategy` CLI flag that can be set on the Ingress Controller -(or an equivalent environment variable: `CONTROLLER_GATEWAY_DISCOVERY_DNS_STRATEGY`). -It accepts 3 values which change the way that Gateway addresses are generated: -- `service` - for service scoped pod DNS names: `pod-ip-address.service-name.my-namespace.svc.cluster-domain.example` -- `pod` - for namespace scope pod DNS names: `pod-ip-address.my-namespace.pod.cluster-domain.example` -- `ip` (default, retains behavior introduced in v2.9) - for regular IP addresses - -When using `gatewayDiscovery`, you should consider configuring the Admin service to use mTLS client verification to make -this interface secure. -Without that, anyone who can access the Admin API from inside the cluster can configure the Gateway instances. - -On the controller release side, that can be achieved by setting `ingressController.adminApi.tls.client.enabled` to `true`. -By default, Helm will generate a certificate Secret named `-admin-api-keypair` and -a CA Secret named `-admin-api-ca-keypair` for you. - -To provide your own cert, set `ingressController.adminApi.tls.client.certProvided` to -`true`, `ingressController.adminApi.tls.client.secretName` to the name of the Secret containing your client cert, and `ingressController.adminApi.tls.client.caSecretName` to the name of the Secret containing your CA cert. - -On the Gateway release side, set either `admin.tls.client.secretName` to the name of your CA Secret or set `admin.tls.client.caBundle` to the CA certificate string. - -### General Parameters - -| Parameter | Description | Default | -| ---------------------------------- | ------------------------------------------------------------------------------------- | ------------------- | -| namespace | Namespace to deploy chart resources | | -| deployment.kong.enabled | Enable or disable deploying Kong | `true` | -| deployment.revisionHistoryLimit | The number of `ReplicaSet`s to retain. | `10` | -| deployment.minReadySeconds | Minimum number of seconds for which newly created pods should be ready without any of its container crashing, for it to be considered available. | | -| deployment.initContainers | Create initContainers. Please go to Kubernetes doc for the spec of the initContainers | | -| deployment.daemonset | Use a DaemonSet instead of a Deployment | `false` | -| deployment.hostname | Set the Deployment's `.spec.template.hostname`. Kong reports this as its hostname. | | -| deployment.hostNetwork | Enable hostNetwork, which binds to the ports to the host | `false` | -| deployment.userDefinedVolumes | Create volumes. Please go to Kubernetes doc for the spec of the volumes | | -| deployment.userDefinedVolumeMounts | Create volumeMounts. Please go to Kubernetes doc for the spec of the volumeMounts | | -| deployment.serviceAccount.create | Create Service Account for the Deployment / Daemonset and the migrations | `true` | -| deployment.serviceAccount.automountServiceAccountToken | Enable ServiceAccount token automount in Kong deployment | `false` | -| deployment.serviceAccount.name | Name of the Service Account, a default one will be generated if left blank. | "" | -| deployment.serviceAccount.annotations | Annotations for the Service Account | {} | -| deployment.test.enabled | Enable creation of test resources for use with "helm test" | `false` | -| autoscaling.enabled | Set this to `true` to enable autoscaling | `false` | -| autoscaling.minReplicas | Set minimum number of replicas | `2` | -| autoscaling.maxReplicas | Set maximum number of replicas | `5` | -| autoscaling.behavior | Sets the [behavior for scaling up and down](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#configurable-scaling-behavior) | `{}` | -| autoscaling.targetCPUUtilizationPercentage | Target Percentage for when autoscaling takes affect. Only used if cluster does not support `autoscaling/v2` or `autoscaling/v2beta2` | `80` | -| autoscaling.metrics | metrics used for autoscaling for clusters that supports `autoscaling/v2` or `autoscaling/v2beta2` | See [values.yaml](values.yaml) | -| updateStrategy | update strategy for deployment | `{}` | -| readinessProbe | Kong readiness probe | | -| livenessProbe | Kong liveness probe | | -| startupProbe | Kong startup probe | | -| lifecycle | Proxy container lifecycle hooks | see `values.yaml` | -| terminationGracePeriodSeconds | Sets the [termination grace period](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#hook-handler-execution) for Deployment pods | 30 | -| affinity | Node/pod affinities | | -| topologySpreadConstraints | Control how Pods are spread across cluster among failure-domains | | -| nodeSelector | Node labels for pod assignment | `{}` | -| deploymentAnnotations | Annotations to add to deployment | see `values.yaml` | -| podAnnotations | Annotations to add to each pod | see `values.yaml` | -| podLabels | Labels to add to each pod | `{}` | -| resources | Pod resource requests & limits | `{}` | -| tolerations | List of node taints to tolerate | `[]` | -| dnsPolicy | Pod dnsPolicy | | -| dnsConfig | Pod dnsConfig | | -| podDisruptionBudget.enabled | Enable PodDisruptionBudget for Kong | `false` | -| podDisruptionBudget.maxUnavailable | Represents the minimum number of Pods that can be unavailable (integer or percentage) | `50%` | -| podDisruptionBudget.minAvailable | Represents the number of Pods that must be available (integer or percentage) | | -| podSecurityPolicy.enabled | Enable podSecurityPolicy for Kong | `false` | -| podSecurityPolicy.labels | Labels to add to podSecurityPolicy for Kong | `{}` | -| podSecurityPolicy.annotations | Annotations to add to podSecurityPolicy for Kong | `{}` | -| podSecurityPolicy.spec | Collection of [PodSecurityPolicy settings](https://kubernetes.io/docs/concepts/policy/pod-security-policy/#what-is-a-pod-security-policy) | | -| priorityClassName | Set pod scheduling priority class for Kong pods | `""` | -| secretVolumes | Mount given secrets as a volume in Kong container to override default certs and keys. | `[]` | -| securityContext | Set the securityContext for Kong Pods | `{}` | -| containerSecurityContext | Set the securityContext for Containers | See values.yaml | -| serviceMonitor.enabled | Create ServiceMonitor for Prometheus Operator | `false` | -| serviceMonitor.trustCRDsExist | Do not check for the Prometheus Operator CRDs, just try to deploy | `false` | -| serviceMonitor.interval | Scraping interval | `30s` | -| serviceMonitor.namespace | Where to create ServiceMonitor | | -| serviceMonitor.labels | ServiceMonitor labels | `{}` | -| serviceMonitor.targetLabels | ServiceMonitor targetLabels | `{}` | -| serviceMonitor.honorLabels | ServiceMonitor honorLabels | `{}` | -| serviceMonitor.metricRelabelings | ServiceMonitor metricRelabelings | `{}` | -| serviceMonitor.relabelings | ServiceMonitor relabelings | `[]` | -| extraConfigMaps | ConfigMaps to add to mounted volumes | `[]` | -| extraSecrets | Secrets to add to mounted volumes | `[]` | -| nameOverride | Replaces "kong" in resource names, like "RELEASENAME-nameOverride" instead of "RELEASENAME-kong" | `""` | -| fullnameOverride | Overrides the entire resource name string | `""` | -| extraObjects | Create additional k8s resources | `[]` | -**Note:** If you are using `deployment.hostNetwork` to bind to lower ports ( < 1024), which may be the desired option (ports 80 and 433), you also -need to tweak the `containerSecurityContext` configuration as in the example: - -```yaml -containerSecurityContext: # run as root to bind to lower ports - capabilities: - add: [NET_BIND_SERVICE] - runAsGroup: 0 - runAsNonRoot: false - runAsUser: 0 -``` - -**Note:** The default `podAnnotations` values disable inbound proxying for Kuma -and Istio. This is appropriate when using Kong as a gateway for external -traffic inbound into the cluster. - -If you want to use Kong as an internal proxy within the cluster network, you -should enable inbound the inbound mesh proxies: - -```yaml -# Enable inbound mesh proxying for Kuma and Istio -podAnnotations: - kuma.io/gateway: disabled - traffic.sidecar.istio.io/includeInboundPorts: "*" -``` - -#### The `env` section - -The `env` section can be used to configured all properties of Kong. -Any key value put under this section translates to environment variables -used to control Kong's configuration. Every key is prefixed with `KONG_` -and upper-cased before setting the environment variable. - -Furthermore, all `kong.env` parameters can also accept a mapping instead of a -value to ensure the parameters can be set through configmaps and secrets. - -An example: - -```yaml -kong: - env: # load PG password from a secret dynamically - pg_user: kong - pg_password: - valueFrom: - secretKeyRef: - key: kong - name: postgres - nginx_worker_processes: "2" -``` - -For complete list of Kong configurations please check the -[Kong configuration docs](https://docs.konghq.com/latest/configuration). - -> **Tip**: You can use the default [values.yaml](values.yaml) - -#### The `customEnv` section - -The `customEnv` section can be used to configure all custom properties of other than Kong. -Any key value put under this section translates to environment variables -that can be used in Kong's plugin configurations. Every key is upper-cased before setting the environment variable. - -An example: - -```yaml -kong: - customEnv: - api_token: - valueFrom: - secretKeyRef: - key: token - name: api_key - client_name: testClient -``` - -#### The `extraLabels` section - -The `extraLabels` section can be used to configure some extra labels that will be added to each Kubernetes object generated. - -For example, you can add the `acme.com/some-key: some-value` label to each Kubernetes object by putting the following in your Helm values: - -```yaml -extraLabels: - acme.com/some-key: some-value -``` - -## Kong Enterprise Parameters - -### Overview - -Kong Enterprise requires some additional configuration not needed when using -Kong Open-Source. To use Kong Enterprise, at the minimum, -you need to do the following: - -- Set `enterprise.enabled` to `true` in `values.yaml` file. -- Update values.yaml to use a Kong Enterprise image. -- Satisfy the two prerequisites below for Enterprise License and - Enterprise Docker Registry. -- (Optional) [set a `password` environment variable](#rbac) to create the - initial super-admin. Though not required, this is recommended for users that - wish to use RBAC, as it cannot be done after initial setup. - -Once you have these set, it is possible to install Kong Enterprise, -but please make sure to review the below sections for other settings that -you should consider configuring before installing Kong. - -Some of the more important configuration is grouped in sections -under the `.enterprise` key in values.yaml, though most enterprise-specific -configuration can be placed under the `.env` key. - -### Prerequisites - -#### Kong Enterprise License - -Kong Enterprise 2.3+ can run with or without a license. If you wish to run 2.3+ -without a license, you can skip this step and leave `enterprise.license_secret` -unset. In this case only a limited subset of features will be available. -Earlier versions require a license. - -If you have paid for a license, but you do not have a copy of yours, please -contact Kong Support. Once you have it, you will need to store it in a Secret: - -```bash -kubectl create secret generic kong-enterprise-license --from-file=license=./license.json -``` - -Set the secret name in `values.yaml`, in the `.enterprise.license_secret` key. -Please ensure the above secret is created in the same namespace in which -Kong is going to be deployed. - -#### Kong Enterprise Docker registry access - -Kong Enterprise versions 2.2 and earlier use a private Docker registry and -require a pull secret. **If you use 2.3 or newer, you can skip this step.** - -You should have received credentials to log into docker hub after -purchasing Kong Enterprise. After logging in, you can retrieve your API key -from \ \> Edit Profile \> API Key. Use this to create registry -secrets: - -```bash -kubectl create secret docker-registry kong-enterprise-edition-docker \ - --docker-server=hub.docker.io \ - --docker-username= \ - --docker-password= -secret/kong-enterprise-edition-docker created -``` - -Set the secret names in `values.yaml` in the `image.pullSecrets` section. -Again, please ensure the above secret is created in the same namespace in which -Kong is going to be deployed. - -### Service location hints - -Kong Enterprise add two GUIs, Kong Manager and the Kong Developer Portal, that -must know where other Kong services (namely the admin and files APIs) can be -accessed in order to function properly. Kong's default behavior for attempting -to locate these absent configuration is unlikely to work in common Kubernetes -environments. Because of this, you should set each of `admin_gui_url`, -`admin_gui_api_url`, `proxy_url`, `portal_api_url`, `portal_gui_host`, and -`portal_gui_protocol` under the `.env` key in values.yaml to locations where -each of their respective services can be accessed to ensure that Kong services -can locate one another and properly set CORS headers. See the -[Property Reference documentation](https://docs.konghq.com/enterprise/latest/property-reference/) -for more details on these settings. - -### RBAC - -You can create a default RBAC superuser when initially running `helm install` -by setting a `password` environment variable under `env` in values.yaml. It -should be a reference to a secret key containing your desired password. This -will create a `kong_admin` admin whose token and basic-auth password match the -value in the secret. For example: - -```yaml -env: - password: - valueFrom: - secretKeyRef: - name: kong-enterprise-superuser-password - key: password -``` - -If using the ingress controller, it needs access to the token as well, by -specifying `kong_admin_token` in its environment variables: - -```yaml -ingressController: - env: - kong_admin_token: - valueFrom: - secretKeyRef: - name: kong-enterprise-superuser-password - key: password -``` - -Although the above examples both use the initial super-admin, we recommend -[creating a less-privileged RBAC user](https://docs.konghq.com/enterprise/latest/kong-manager/administration/rbac/add-user/) -for the controller after installing. It needs at least workspace admin -privileges in its workspace (`default` by default, settable by adding a -`workspace` variable under `ingressController.env`). Once you create the -controller user, add its token to a secret and update your `kong_admin_token` -variable to use it. Remove the `password` variable from Kong's environment -variables and the secret containing the super-admin token after. - -### Sessions - -Login sessions for Kong Manager and the Developer Portal make use of -[the Kong Sessions plugin](https://docs.konghq.com/enterprise/latest/kong-manager/authentication/sessions). -When configured via values.yaml, their configuration must be stored in Secrets, -as it contains an HMAC key. - -Kong Manager's session configuration must be configured via values.yaml, -whereas this is optional for the Developer Portal on versions 0.36+. Providing -Portal session configuration in values.yaml provides the default session -configuration, which can be overridden on a per-workspace basis. - -```bash -cat admin_gui_session_conf -``` - -```json -{"cookie_name":"admin_session","cookie_samesite":"off","secret":"admin-secret-CHANGEME","cookie_secure":true,"storage":"kong"} -``` - -```bash -cat portal_session_conf -``` - -```json -{"cookie_name":"portal_session","cookie_samesite":"off","secret":"portal-secret-CHANGEME","cookie_secure":true,"storage":"kong"} -``` - -```bash -kubectl create secret generic kong-session-config --from-file=admin_gui_session_conf --from-file=portal_session_conf -``` - -```bash -secret/kong-session-config created -``` - -The exact plugin settings may vary in your environment. The `secret` should -always be changed for both configurations. - -After creating your secret, set its name in values.yaml in -`.enterprise.rbac.session_conf_secret`. If you create a Portal configuration, -add it at `env.portal_session_conf` using a secretKeyRef. - -### Email/SMTP - -Email is used to send invitations for -[Kong Admins](https://docs.konghq.com/enterprise/latest/kong-manager/networking/email) -and [Developers](https://docs.konghq.com/enterprise/latest/developer-portal/configuration/smtp). - -Email invitations rely on setting a number of SMTP settings at once. For -convenience, these are grouped under the `.enterprise.smtp` key in values.yaml. -Setting `.enterprise.smtp.disabled: true` will set `KONG_SMTP_MOCK=on` and -allow Admin/Developer invites to proceed without sending email. Note, however, -that these have limited functionality without sending email. - -If your SMTP server requires authentication, you must provide the `username` -and `smtp_password_secret` keys under `.enterprise.smtp.auth`. -`smtp_password_secret` must be a Secret containing an `smtp_password` key whose -value is your SMTP password. - -By default, SMTP uses `AUTH` `PLAIN` when you provide credentials. If your provider requires `AUTH LOGIN`, set `smtp_auth_type: login`. - -## Prometheus Operator integration - -The chart can configure a ServiceMonitor resource to instruct the [Prometheus -Operator](https://github.com/prometheus-operator/prometheus-operator) to -collect metrics from Kong Pods. To enable this, set -`serviceMonitor.enabled=true` in `values.yaml`. - -Kong exposes memory usage and connection counts by default. You can enable -traffic metrics for routes and services by configuring the [Prometheus -plugin](https://docs.konghq.com/hub/kong-inc/prometheus/). - -The ServiceMonitor requires an `enable-metrics: "true"` label on one of the -chart's Services to collect data. By default, this label is set on the proxy -Service. It should only be set on a single chart Service to avoid duplicate -data. If you disable the proxy Service (e.g. on a hybrid control plane instance -or Portal-only instance) and still wish to collect memory usage metrics, add -this label to another Service, e.g. on the admin API Service: - -``` -admin: - labels: - enable-metrics: "true" -``` - -## Argo CD Considerations - -The built-in database subchart (`postgresql.enabled` in values) is not -supported when installing the chart via Argo CD. - -Argo CD does not support the full Helm lifecycle. There is no distinction -between the initial install and upgrades. Both operations are a "sync" in Argo -terms. This affects when migration Jobs execute in database-backed Kong -installs. - -The chart sets the `Sync` and `BeforeHookCreation` deletion -[hook policies](https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/) -on the `init-migrations` and `pre-upgrade-migrations` Jobs. - -The `pre-upgrade-migrations` Job normally uses Helm's `pre-upgrade` policy. Argo -translates this to its `PreSync` policy, which would create the Job before all -sync phase resources. Doing this before various sync phase resources (such as -the ServiceAccount) are in place would prevent the Job from running -successfully. Overriding this with Argo's `Sync` policy starts the Job at the -same time as the upgraded Deployment Pods. The new Pods may fail to start -temporarily, but will eventually start normally once migrations complete. - -## Seeking help - -If you run into an issue, bug or have a question, please reach out to the Kong -community via [Kong Nation](https://discuss.konghq.com). -Please do not open issues in [this](https://github.com/helm/charts) repository -as the maintainers will not be notified and won't respond. diff --git a/manifests/helm/kong/2.46.0/UPGRADE.md b/manifests/helm/kong/2.46.0/UPGRADE.md deleted file mode 100644 index 8935277..0000000 --- a/manifests/helm/kong/2.46.0/UPGRADE.md +++ /dev/null @@ -1,807 +0,0 @@ -# Upgrade considerations - -New versions of the Kong chart may add significant new functionality or -deprecate/entirely remove old functionality. This document covers how and why -users should update their chart configuration to take advantage of new features -or migrate away from deprecated features. - -In general, breaking changes deprecate their old features before removing them -entirely. While support for the old functionality remains, the chart will show -a warning about the outdated configuration when running `helm -install/status/upgrade`. - -Note that not all versions contain breaking changes. If a version is not -present in the table of contents, it requires no version-specific changes when -upgrading from a previous version. - -## Table of contents - -- [Upgrade considerations for all versions](#upgrade-considerations-for-all-versions) -- [2.26.0](#2260) -- [2.19.0](#2190) -- [2.13.0](#2130) -- [2.8.0](#280) -- [2.7.0](#270) -- [2.4.0](#240) -- [2.3.0](#230) -- [2.2.0](#220) -- [2.1.0](#210) -- [2.0.0](#200) -- [1.14.0](#1140) -- [1.11.0](#1110) -- [1.10.0](#1100) -- [1.9.0](#190) -- [1.6.0](#160) -- [1.5.0](#150) -- [1.4.0](#140) -- [1.3.0](#130) - -## Upgrade considerations for all versions - -The chart automates the -[upgrade migration process](https://github.com/Kong/kong/blob/master/UPGRADE.md). -When running `helm upgrade`, the chart spawns an initial job to run `kong -migrations up` and then spawns new Kong pods with the updated version. Once -these pods become ready, they begin processing traffic and old pods are -terminated. Once this is complete, the chart spawns another job to run `kong -migrations finish`. - -If you split your Kong deployment across multiple Helm releases (to create -proxy-only and admin-only nodes, for example), you must -[set which migration jobs run based on your upgrade order](https://github.com/Kong/charts/blob/main/charts/kong/README.md#separate-admin-and-proxy-nodes). -However, this does not apply to hybrid mode, which can run both migrations but -requires [upgrading the control plane version -first](https://docs.konghq.com/gateway/latest/plan-and-deploy/hybrid-mode/#version-compatibility). - -While the migrations themselves are automated, the chart does not automatically -ensure that you follow the recommended upgrade path. If you are upgrading from -more than one minor Kong version back, check the [upgrade path -recommendations for Kong open source](https://github.com/Kong/kong/blob/master/UPGRADE.md#3-suggested-upgrade-path) -or [Kong Enterprise](https://docs.konghq.com/enterprise/latest/deployment/migrations/). - -Although not required, users should upgrade their chart version and Kong -version indepedently. In the even of any issues, this will help clarify whether -the issue stems from changes in Kubernetes resources or changes in Kong. - -Users may encounter an error when upgrading which displays a large block of -text ending with `field is immutable`. This is typically due to a bug with the -`init-migrations` job, which was not removed automatically prior to 1.5.0. -If you encounter this error, deleting any existing `init-migrations` jobs will -clear it. - -### Updates to CRDs - -Helm installs CRDs at initial install but [does not update them -after](https://github.com/helm/community/blob/main/hips/hip-0011.md). Some -chart releases include updates to CRDs that must be applied to successfully -upgrade. Because Helm does not handle these updates, you must manually apply -them before upgrading your release. - -``` kubectl apply -f -https://raw.githubusercontent.com/Kong/charts/kong-/charts/kong/crds/custom-resource-definitions.yaml -``` - -For example, if your release is 2.6.4, you would apply -`https://raw.githubusercontent.com/Kong/charts/kong-2.6.4/charts/kong/crds/custom-resource-definitions.yaml`. - -## 2.26.0 - -If you are using controller version 2.10 or lower and proxy version 3.3 or -higher in separate Deployments (such as when using the `ingress` chart), proxy -Pods will not become ready unless you override the default readiness endpoint: - -``` -readinessProbe: - httpGet: - path: /status -``` - -This section goes under the `gateway` section when using the `ingress` chart. - -2.26 changes the default proxy readiness endpoint to the `/status/ready` -endpoint introduced in Kong 3.3. This endpoint reports true when Kong has -configuration available, whereas the previous `/status` endpoint returned true -immediately after start, and could result in proxy instances attempting to -serve requests before they had configuration. - -The chart has logic to fall back to the older endpoint if the proxy and -controller versions do not work well with the new endpoint. However, the chart -detection cannot determine the controller version when the controller is in a -separate Deployment, and will always use the new endpoint if the Kong image -version is 3.3 or higher. - -Kong recommends Kong 3.3 and higher users update to controller 2.11 at their -earliest convenience to take advantage of the improved readiness behavior. - -## 2.19.0 - -2.19 sets a default [security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) -that declares a read-only root filesystem for Kong containers. The base Kong and KIC -images are compatible with this setting. The chart mounts temporary writeable -emptyDir filesystems for locations that require writeable files (`/tmp` and -`/kong_prefix/`). - -This setting limit attack surface and should be compatible with most -installations. However, if you use custom plugins that write to disk, you must -either mount a writeable emptyDir for them or override the new defaults by -setting: - -``` -containerSecurityContext: - readOnlyRootFilesystem: false -``` - -in your values.yaml. - -## 2.13.0 - -2.13.0 includes updated CRDs. You must [apply these manually](#updates-to-crds) -before upgrading an existing release. - -2.13 changes the default Kong tag to 3.0 and the default KIC tag to 2.6. We -recommend that you set these versions (`image.tag` and -`ingressController.image.tag`) in your values.yaml to allow updating the chart -without also updating the container versions. If you do update to these -container image versions, you should first review the Kong 3.0 breaking changes -(see the [open -source](https://github.com/Kong/kong/blob/master/CHANGELOG.md#300) and -[Enterprise](https://docs.konghq.com/gateway/changelog/#3000) Kong changelogs) -and the [ingress controller upgrade guide for Kong -3.x](https://docs.konghq.com/kubernetes-ingress-controller/2.6.x/guides/upgrade-kong-3x). - -Kong 3.0 requires KIC version 2.6 at minimum. It will not work with any -previous versions. Changes to regular expression paths in Kong 3.x furthermore -require changes to Ingresses that use regular expression paths in rules. - -## 2.8.0 - -### IngressClass controller name change requires manual delete - -2.8 updates the chart-managed IngressClass's controller name to match the -controller name used elsewhere in Kong's documenation. Controller names are -immutable, so Helm cannot actually update existing IngressClass resources. - -Prior to your upgrade, you must delete the existing IngressClass. Helm will -create a new IngressClass with the new controller name during the upgrade: - -``` -kubectl delete ingressclass -helm upgrade RELEASE_NAME kong/kong ... -``` - -Removing the IngressClass will not affect configuration: the controller -IngressClass implementation is still in progress, and it will still ingest -resources whose `ingress.class` annotation or `ingressClassName` value matches -the the `CONTROLLER_INGRESS_CLASS` value in the controller environment even if -no matching IngressClass exists. - -### Postgres subchart version update - -2.8 updates the Postgres subchart version from 8.6.8 to 11.1.15. This changes -a number of values.yaml keys and the default Postgres version. The previous -default Postgres version was [11.7.0-debian-10-r37](https://github.com/bitnami/charts/blob/590c6b0f4e07161614453b12efe71f22e0c00a46/bitnami/postgresql/values.yaml#L18). - -To use the new version on an existing install, you should [follow Bitnami's -instructions for updating values.yaml keys and upgrading their chart]() as well -as [the Postgres upgrade instructions](https://www.postgresql.org/docs/current/upgrading.html). - -You can alternately use the new chart without upgrading Postgres by setting -`postgresql.image.tag=11.7.0-debian-10-r37` or use the old version of the -chart. Helm documentation is unclear on whether ignoring a subchart version -change for a release is possible, so we recommend [dumping the -database](https://www.postgresql.org/docs/current/backup-dump.html) and -creating a separate release if you wish to continue using 8.6.8: - -``` -helm install my-release -f values.yaml --version 8.6.8 bitnami/postgresql -``` - -Afterwords, you will upgrade your Kong chart release with -`postgresql.enabled=false` and `env.pg_host` and `env.pg_password` set to the -appropriate hostname and Secret reference for your new release (these are set -automatically when the subchart is enabled, but will not be set automatically -with a separate release). - -## 2.7.0 - -2.7 updates CRDs to the version released in KIC 2.1.0. Helm does not upgrade -CRDs automatically; you must `kubectl apply -f https://raw.githubusercontent.com/Kong/charts/kong-2.7.0/charts/kong/crds/custom-resource-definitions.yaml` -manually before upgrading. - -You should not apply the updated CRDs until you are prepared to upgrade to KIC -2.1 or higher, and [must have first upgraded to 2.0](https://github.com/Kong/kubernetes-ingress-controller/blob/v2.1.1/CHANGELOG.md#breaking-changes) -and applied the [previous version of the CRDs](https://raw.githubusercontent.com/Kong/charts/kong-2.6.4/charts/kong/crds/custom-resource-definitions.yaml). - -## 2.4.0 - -### Disable ingress controller prior to 2.x upgrade when using PostgreSQL - -Chart version 2.4 is the first Kong chart version that defaults to the 2.x -series of ingress controller releases. 2.x uses a different leader election -system than 1.x. If both versions are running simultaneously, both controller -versions will attempt to interact with the admin API, potentially setting -inconsistent configuration in the database when PostgreSQL is the backend. - -If you are configured with the following: - -- ingressController.enabled=true -- postgresql.enabled=true - -and do not override the ingress controller version, you must perform the -upgrade in multiple steps: - -First, pin the controller version and upgrade to chart 2.4.0: - -```console -helm upgrade --wait \ - --set ingressController.image.tag= \ - --version 2.4.0 \ - --namespace \ - kong/kong -``` - -Second, temporarily disable the ingress controller: - -```console -helm upgrade --wait \ - --set ingressController.enabled=false \ - --set deployment.serviceaccount.create=true \ - --version 2.4.0 \ - --namespace \ - kong/kong -``` - -Finally, re-enable the ingress controller at the new version: - -```console -helm upgrade --wait \ - --set ingressController.enabled=true \ - --set ingressController.image.tag= \ - --version 2.4.0 \ - --namespace \ - kong/kong -``` - -While the controller is disabled, changes to Kubernetes configuration (Ingress -resources, KongPlugin resources, Service Endpoints, etc.) will not update Kong -proxy configuration. We recommend you establish an active maintenance window -under which to perform this upgrade and inform users and stakeholders so as to -avoid unexpected disruption. - -### Changed ServiceAccount configuration location - -2.4.0 moved ServiceAccount configuration from -`ingressController.serviceAccount` to `deployment.serviceAccount` to accomodate -configurations that required a ServiceAccount but did not use the controller. - -The chart now creates a ServiceAccount by default. When enabled, upgrade -migration hooks require the ServiceAccount, but Helm will not create it before -the hooks run, and the migration jobs will fail. To avoid this, first perform -an initial chart upgrade that does not update the Kong image version and sets -`migrations.preUpgrade=false` and `migrations.postUpgrade=false`. This will -create the account for future upgrades, and you can re-enable migrations and -upgrade your Kong version after. - -If you disable ServiceAccount or override its name, you must move your -configuration under `deployment.serviceAccount`. The chart will warn you if it -detects non-default configuration in the original location when you upgrade. -You can use `helm upgrade --dry-run` to see if you are affected before actually -upgrading. - -## 2.3.0 - -### Updated CRDs and CRD API version - -2.3.0 adds new and updated CRDs for KIC 2.x. These CRDs are compatible with -KIC 1.x also. The CRD API version is now v1, replacing the deprecated v1beta1, -to support Kubernetes 1.22 and onward. API version v1 requires Kubernetes 1.16 -and newer. - -Helm 2-style CRD management will upgrade CRDs automatically. You can check to -see if you are using Helm 2-style management by running: - -``` -kubectl get crd kongconsumers.configuration.konghq.com -o yaml | grep "meta.helm.sh/release-name" -``` - -If you see output, you are using Helm 2-style CRD management. - -Helm 3-style CRD management (the default) does not upgrade CRDs automatically. -You must apply the changes manually by running: - -``` -kubectl apply -f https://raw.githubusercontent.com/Kong/charts/kong-2.2.0/charts/kong/crds/custom-resource-definitions.yaml -``` - -Although not recommended, you can remain on an older Kubernetes version and not -upgrade your CRDs if you are using Helm 3-style CRD management. However, you -will not be able to run KIC 2.x, and these configurations are considered -unsupported. - -### Ingress controller feature detection - -2.3.0 includes some features that are enabled by default, but require KIC 2.x. -KIC 2.x is not yet the default ingress controller version because there are -currently only preview releases for it. To maintain compatibility with KIC 1.x, -the chart automatically detects the KIC image version and disables incompatible -features. This feature detection requires a semver image tag, and the chart -cannot render successfully if the image tag is not semver-compliant. - -Standard KIC images do use semver-compliant tags, and you do not need to make -any configuration changes if you use one. If you use a non-semver tag, such as -`next`, you must set the new `ingressController.image.effectiveSemver` field to -your approximate semver version. For example, if your `next` tag is for an -unreleased `2.1.0` KIC version, you should set `effectiveSemver: 2.1.0`. - -## 2.2.0 - -### Changes to pod disruption budget defaults - -Prior to 2.2.0, the default values.yaml included -`podDisruptionBudget.maxUnavailable: 50%`. This prevented setting -`podDisruptionBudget.minUnavailable` at all. To allow use of -`podDisruptionBudget.minUnavailable`, we have removed the -`podDisruptionBudget.maxUnavailable` default. If you previously relied on this -default (you set `podDisruptionBudget.enabled: true` but did not set -`podDisruptionBudget.maxUnavailable`), you now must explicitly set -`podDisruptionBudget.maxUnavailable: 50%` in your values.yaml. - -## 2.1.0 - -### Migration off Bintray - -Bintray, the Docker registry previously used for several images used by this -chart, is [sunsetting May 1, -2021](https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/). - -The chart default `values.yaml` now uses the new Docker Hub repositories for all -affected images. You should check your release `values.yaml` files to confirm that -they do not still reference Bintray repositories. If they do, update them to -use the Docker Hub repositories now in the default `values.yaml`. - -## 2.0.0 - -### Support for Helm 2 dropped - -2.0.0 takes advantage of template functionality that is only available in Helm -3 and reworks values defaults to target Helm 3 CRD handling, and requires Helm -3 as such. If you are not already using Helm 3, you must migrate to it before -updating to 2.0.0 or later: - -https://helm.sh/docs/topics/v2_v3_migration/ - -If desired, you can migrate your Kong chart releases without migrating charts' -releases. - -### Support for deprecated 1.x features removed - -Several previous 1.x chart releases reworked sections of values.yaml while -maintaining support for the older version of those settings. 2.x drops support -for the older versions of these settings entirely: - -* [Portal auth settings](#removal-of-dedicated-portal-authentication-configuration-parameters) -* [The `runMigrations` setting](#changes-to-migration-job-configuration) -* [Single-stack admin API Service configuration](#changes-to-kong-service-configuration) -* [Multi-host proxy configuration](#removal-of-multi-host-proxy-ingress) - -Each deprecated setting is accompanied by a warning that appears at the end of -`helm upgrade` output on a 1.x release: - -``` -WARNING: You are currently using legacy ... -``` - -If you do not see any such warnings when upgrading a release using chart -1.15.0, you are not using deprecated configuration and are ready to upgrade to -2.0.0. If you do see these warnings, follow the linked instructions to migrate -to the current settings format. - -## 1.14.0 - -### Removal of multi-host proxy Ingress - -Most of the chart's Ingress templates support a single hostname and TLS Secret. -The proxy Ingress template originally differed, and allowed multiple hostnames -and TLS configurations. As of chart 1.14.0, we have deprecated the unique proxy -Ingress configuration; it is now identical to all other Kong services. If you -do not need to configure multiple Ingress rules for your proxy, you will -change: - -```yaml -ingress: - hosts: ["proxy.kong.example"] - tls: - - hosts: - - proxy.kong.example - secretName: example-tls-secret - path: / -``` -to: - -```yaml -ingress: - tls: example-tls-secret - hostname: proxy.kong.example - path: / -``` -We plan to remove support for the multi-host configuration entirely in version -2.0 of the chart. If you currently use multiple hosts, we recommend that you -either: -- Define Ingresses for each application, e.g. if you proxy applicationA at - `foo.kong.example` and applicationB at `bar.kong.example`, you deploy those - applications with their own Ingress resources that target the proxy. -- Define a multi-host Ingress manually. Before upgrading, save your current - proxy Ingress, delete labels from the saved copy, and set - `proxy.ingress.enabled=false`. After upgrading, create your Ingress from the - saved copy and edit it directly to add new rules. - -We expect that most users do not need a built-in multi-host proxy Ingress or -even a proxy Ingress at all: the old configuration predates the Kong Ingress -Controller and is most useful if you place Kong behind some other controller. -If you are interested in preserving this functionality, please [discuss your -use case with us](https://github.com/Kong/charts/issues/73). If there is -sufficient interest, we will explore options for continuing to support the -original proxy Ingress configuration format. - -### Default custom server block replaced with status listen - -Earlier versions of the chart included [a custom server block](https://github.com/Kong/charts/blob/kong-1.13.0/charts/kong/templates/config-custom-server-blocks.yaml) -to provide `/status` and `/metrics` endpoints. This server block simplified -RBAC-enabled Enterprise deployments by providing access to these endpoints -outside the (protected) admin API. - -Current versions (Kong 1.4.0+ and Kong Enterprise 1.5.0+) have a built-in -status listen that provides the same functionality, and chart 1.14.0 uses it -for readiness/liveness probes and the Prometheus service monitor. - -If you are using a version that supports the new status endpoint, you do not -need to make any changes to your values unless you include `readinessProbe` and -`livenessProbe` in them. If you do, you must change the port from `metrics` to -`status`. - -If you are using an older version that does not support the status listen, you -will need to: -- Create the server block ConfigMap independent of the chart. You will need to - set the ConfigMap name and namespace manually and remove the labels block. -- Add an `extraConfigMaps` values entry for your ConfigMap. -- Set `env.nginx_http_include` to `/path/to/your/mount/servers.conf`. -- Add the [old readiness/liveness probe blocks](https://github.com/Kong/charts/blob/kong-1.13.0/charts/kong/values.yaml#L437-L458) - to your values.yaml. -- If you use the Prometheus service monitor, edit it after installing the chart - and set `targetPort` to `9542`. This cannot be set from values.yaml, but Helm - 3 will preserve the change on subsequent upgrades. - -## 1.11.0 - -### `KongCredential` custom resources no longer supported - -1.11.0 updates the default Kong Ingress Controller version to 1.0. Controller -1.0 removes support for the deprecated KongCredential resource. Before -upgrading to chart 1.11.0, you must convert existing KongCredential resources -to [credential Secrets](https://github.com/Kong/kubernetes-ingress-controller/blob/next/docs/guides/using-consumer-credential-resource.md#provision-a-consumer). - -Custom resource management varies depending on your exact chart configuration. -By default, Helm 3 only creates CRDs in the `crds` directory if they are not -already present, and does not modify or remove them after. If you use this -management method, you should create a manifest file that contains [only the -KongCredential CRD](https://github.com/Kong/charts/blob/kong-1.10.0/charts/kong/crds/custom-resource-definitions.yaml#L35-L68) -and then [delete it](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#delete-a-customresourcedefinition). - -Helm 2 and Helm 3 both allow managing CRDs via the chart. In Helm 2, this is -required; in Helm 3, it is optional. When using this method, only a single -release will actually manage the CRD. Check to see which release has -`ingressController.installCRDs: true` to determine which does so if you have -multiple releases. When using this management method, upgrading a release to -chart 1.11.0 will delete the KongCredential CRD during the upgrade, which will -_delete any existing KongCredential resources_. To avoid losing configuration, -check to see if your CRD is managed: - -``` -kubectl get crd kongcredentials.configuration.konghq.com -o yaml | grep "app.kubernetes.io/managed-by: Helm" -``` - -If that command returns output, your CRD is managed and you must convert to -credential Secrets before upgrading (you should do so regardless, but are not -at risk of losing data, and can downgrade to an older chart version if you have -issues). - -### Changes to CRDs - -Controller 1.0 [introduces a status field](https://github.com/Kong/kubernetes-ingress-controller/blob/main/CHANGELOG.md#added) -for its custom resources. By default, Helm 3 does not apply updates to custom -resource definitions if those definitions are already present on the Kubernetes -API server (and they will be if you are upgrading a release from a previous -chart version). To update your custom resources: - -``` -kubectl apply -f https://raw.githubusercontent.com/Kong/charts/main/charts/kong/crds/custom-resource-definitions.yaml -``` - -### Deprecated controller flags/environment variables and annotations removed - -Kong Ingress Controller 0.x versions had a number of deprecated -flags/environment variables and annotations. Version 1.0 removes support for -these, and you must update your configuration to use their modern equivalents -before upgrading to chart 1.11.0. - -The [controller changelog](https://github.com/Kong/kubernetes-ingress-controller/blob/master/CHANGELOG.md#breaking-changes) -provides links to lists of deprecated configuration and their replacements. - -## 1.10.0 - -### `KongClusterPlugin` replaces global `KongPlugin`s - -Kong Ingress Controller 0.10.0 no longer supports `KongPlugin`s with a `global: true` label. See the [KIC changelog for 0.10.0](https://github.com/Kong/kubernetes-ingress-controller/blob/main/CHANGELOG.md#0100---20200915) for migration hints. - -### Dropping support for resources not specifying an ingress class - -Kong Ingress Controller 0.10.0 drops support for certain kinds of resources without a `kubernetes.io/ingress.class` annotation. See the [KIC changelog for 0.10.0](https://github.com/Kong/kubernetes-ingress-controller/blob/main/CHANGELOG.md#0100---20200915) for the exact list of those kinds, and for possible migration paths. - -## 1.9.0 - -### New image for Enterprise controller-managed DB-less deployments - -As of Kong Enterprise 2.1.3.0, there is no longer a separate image -(`kong-enterprise-k8s`) for controller-managed DB-less deployments. All Kong -Enterprise deployments now use the `kong-enterprise-edition` image. - -Existing users of the `kong-enterprise-k8s` image can use the latest -`kong-enterprise-edition` image as a drop-in replacement for the -`kong-enterprise-k8s` image. You will also need to [create a Docker registry -secret](https://github.com/Kong/charts/blob/main/charts/kong/README.md#kong-enterprise-docker-registry-access) -for the `kong-enterprise-edition` registry and add it to `image.pullSecrets` in -values.yaml if you do not have one already. - -### Changes to wait-for-postgres image - -Prior to 1.9.0, the chart launched a busybox initContainer for migration Pods -to check Postgres' reachability [using -netcat](https://github.com/Kong/charts/blob/kong-1.8.0/charts/kong/templates/_helpers.tpl#L626). - -As of 1.9.0, the chart uses a [bash -script](https://github.com/Kong/charts/blob/kong-1.9.0/charts/kong/templates/wait-for-postgres-script.yaml) -to perform the same connectivity check. The default `waitImage.repository` -value is now `bash` rather than `busybox`. Double-check your values.yaml to -confirm that you do not set `waitImage.repository` and `waitImage.tag` to the -old defaults: if you do, remove that configuration before upgrading. - -The Helm upgrade cycle requires this script be available for upgrade jobs. On -existing installations, you must first perform an initial `helm upgrade --set -migrations.preUpgrade=false --migrations.postUpgrade=false` to chart 1.9.0. -Perform this initial upgrade without making changes to your Kong image version: -if you are upgrading Kong along with the chart, perform a separate upgrade -after with the migration jobs re-enabled. - -If you do not override `waitImage.repository` in your releases, you do not need -to make any other configuration changes when upgrading to 1.9.0. - -If you do override `waitImage.repository` to use a custom image, you must -switch to a custom image that provides a `bash` executable. Note that busybox -images, or images derived from it, do _not_ include a `bash` executable. We -recommend switching to an image derived from the public bash Docker image or a -base operating system image that provides a `bash` executable. - -## 1.6.0 - -### Changes to Custom Resource Definitions - -The KongPlugin and KongClusterPlugin resources have changed. Helm 3's CRD -management system does not modify CRDs during `helm upgrade`, and these must be -updated manually: - -``` -kubectl apply -f https://raw.githubusercontent.com/Kong/charts/kong-1.6.0/charts/kong/crds/custom-resource-definitions.yaml -``` - -Existing plugin resources do not require changes; the CRD update only adds new -fields. - -### Removal of default security context UID setting - -Versions of Kong prior to 2.0 and Kong Enterprise prior to 1.3 use Docker -images that required setting a UID via Kubernetes in some environments -(primarily OpenShift). This is no longer necessary with modern Docker images -and can cause issues depending on other environment settings, so it was -removed. - -Most users should not need to take any action, but if you encounter permissions -errors when upgrading (`kubectl describe pod PODNAME` should contain any), you -can restore it by adding the following to your values.yaml: - -``` -securityContext: - runAsUser: 1000 -``` - -## 1.5.0 - -### PodSecurityPolicy defaults to read-only root filesystem - -1.5.0 defaults to using a read-only root container filesystem if -`podSecurityPolicy.enabled: true` is set in values.yaml. This improves -security, but is incompatible with Kong Enterprise versions prior to 1.5. If -you use an older version and enable PodSecurityPolicy, you must set -`podSecurityPolicy.spec.readOnlyRootFilesystem: false`. - -Kong open-source and Kong for Kubernetes Enterprise are compatible with a -read-only root filesystem on all versions. - -### Changes to migration job configuration - -Previously, all migration jobs were enabled/disabled through a single -`runMigrations` setting. 1.5.0 splits these into toggles for each of the -individual upgrade migrations: - -``` -migrations: - preUpgrade: true - postUpgrade: true -``` - -Initial migration jobs are now only run during `helm install` and are deleted -automatically when users first run `helm upgrade`. - -Users should replace `runMigrations` with the above block from the latest -values.yaml. - -The new format addresses several needs: -* The initial migrations job are only created during the initial install, - preventing [conflicts on upgrades](https://github.com/Kong/charts/blob/main/charts/kong/FAQs.md#running-helm-upgrade-fails-because-of-old-init-migrations-job). -* The upgrade migrations jobs can be disabled as need for managing - [multi-release clusters](https://github.com/Kong/charts/blob/main/charts/kong/README.md#separate-admin-and-proxy-nodes). - This enables management of clusters that have nodes with different roles, - e.g. nodes that only run the proxy and nodes that only run the admin API. -* Migration jobs now allow specifying annotations, and provide a default set - of annotations that disable some service mesh sidecars. Because sidecar - containers do not terminate, they [prevent the jobs from completing](https://github.com/kubernetes/kubernetes/issues/25908). - -## 1.4.0 - -### Changes to default Postgres permissions - -The [Postgres sub-chart](https://github.com/bitnami/charts/tree/master/bitnami/postgresql) -used by this chart has modified the way their chart handles file permissions. -This is not an issue for new installations, but prevents Postgres from starting -if its PVC was created with an older version. If affected, your Postgres pod -logs will show: - -``` -postgresql 19:16:04.03 INFO ==> ** Starting PostgreSQL ** -2020-03-27 19:16:04.053 GMT [1] FATAL: data directory "/bitnami/postgresql/data" has group or world access -2020-03-27 19:16:04.053 GMT [1] DETAIL: Permissions should be u=rwx (0700). -``` - -You can restore the old permission handling behavior by adding two settings to -the `postgresql` block in values.yaml: - -```yaml -postgresql: - enabled: true - postgresqlDataDir: /bitnami/postgresql/data - volumePermissions: - enabled: true -``` - -For background, see https://github.com/helm/charts/issues/13651 - -### `strip_path` now defaults to `false` for controller-managed routes - -1.4.0 defaults to version 0.8 of the ingress controller, which changes the -default value of the `strip_path` route setting from `true` to `false`. To -understand how this works in practice, compare the upstream path for these -requests when `strip_path` is toggled: - -| Ingress path | `strip_path` | Request path | Upstream path | -|--------------|--------------|--------------|---------------| -| /foo/bar | true | /foo/bar/baz | /baz | -| /foo/bar | false | /foo/bar/baz | /foo/bar/baz | - -This change brings the controller in line with the Kubernetes Ingress -specification, which expects that controllers will not modify the request -before passing it upstream unless explicitly configured to do so. - -To preserve your existing route handling, you should add this annotation to -your ingress resources: - -``` -konghq.com/strip-path: "true" -``` - -This is a new annotation that is equivalent to the `route.strip_path` setting -in KongIngress resources. Note that if you have already set this to `false`, -you should leave it as-is and not add an annotation to the ingress. - -### Changes to Kong service configuration - -1.4.0 reworks the templates and configuration used to generate Kong -configuration and Kuberenetes resources for Kong's services (the admin API, -proxy, Developer Portal, etc.). For the admin API, this requires breaking -changes to the configuration format in values.yaml. Prior to 1.4.0, the admin -API allowed a single listen only, which could be toggled between HTTPS and -HTTP: - -```yaml -admin: - enabled: false # create Service - useTLS: true - servicePort: 8444 - containerPort: 8444 -``` -In 1.4.0+, the admin API allows enabling or disabling the HTTP and TLS listens -independently. The equivalent of the above configuration is: - -```yaml -admin: - enabled: false # create Service - http: - enabled: false # create HTTP listen - servicePort: 8001 - containerPort: 8001 - parameters: [] - - tls: - enabled: true # create HTTPS listen - servicePort: 8444 - containerPort: 8444 - parameters: - - http2 -``` -All Kong services now support `SERVICE.enabled` parameters: these allow -disabling the creation of a Kubernetes Service resource for that Kong service, -which is useful in configurations where nodes have different roles, e.g. where -some nodes only handle proxy traffic and some only handle admin API traffic. To -disable a Kong service completely, you should also set `SERVICE.http.enabled: -false` and `SERVICE.tls.enabled: false`. Disabling creation of the Service -resource only leaves the Kong service enabled, but only accessible within its -pod. The admin API is configured with only Service creation disabled to allow -the ingress controller to access it without allowing access from other pods. - -Services now also include a new `parameters` section that allows setting -additional listen options, e.g. the `reuseport` and `backlog=16384` parameters -from the [default 2.0.0 proxy -listen](https://github.com/Kong/kong/blob/2.0.0/kong.conf.default#L186). For -compatibility with older Kong versions, the chart defaults do not enable most -of the newer parameters, only HTTP/2 support. Users of versions 1.3.0 and newer -can safely add the new parameters. - -## 1.3.0 - -### Removal of dedicated Portal authentication configuration parameters - -1.3.0 deprecates the `enterprise.portal.portal_auth` and -`enterprise.portal.session_conf_secret` settings in values.yaml in favor of -placing equivalent configuration under `env`. These settings are less important -in Kong Enterprise 0.36+, as they can both be set per workspace in Kong -Manager. - -These settings provide the default settings for Portal instances: when the -"Authentication plugin" and "Session Config" dropdowns at -https://manager.kong.example/WORKSPACE/portal/settings/ are set to "Default", -the settings from `KONG_PORTAL_AUTH` and `KONG_PORTAL_SESSION_CONF` are used. -If these environment variables are not set, the defaults are to use -`basic-auth` and `{}` (which applies the [session plugin default -configuration](https://docs.konghq.com/hub/kong-inc/session/)). - -If you set nonstandard defaults and wish to keep using these settings, or use -Kong Enterprise 0.35 (which did not provide a means to set per-workspace -session configuration) you should convert them to environment variables. For -example, if you currently have: - -```yaml -portal: - enabled: true - portal_auth: basic-auth - session_conf_secret: portal-session -``` -You should remove the `portal_auth` and `session_conf_secret` entries and -replace them with their equivalents under the `env` block: - -```yaml -env: - portal_auth: basic-auth - portal_session_conf: - valueFrom: - secretKeyRef: - name: portal-session - key: portal_session_conf -``` diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/.helmignore b/manifests/helm/kong/2.46.0/charts/postgresql/.helmignore deleted file mode 100644 index f0c1319..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/.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/manifests/helm/kong/2.46.0/charts/postgresql/Chart.lock b/manifests/helm/kong/2.46.0/charts/postgresql/Chart.lock deleted file mode 100644 index 123dedb..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://charts.bitnami.com/bitnami - version: 2.0.4 -digest: sha256:ec5726c5d8f1e474cc6c9ca90c18efc35f4dbd15ccaf2df148764947d5ad6a6c -generated: "2022-10-25T14:40:27.273494162Z" diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/Chart.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/Chart.yaml deleted file mode 100644 index 109e6b2..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -annotations: - category: Database -apiVersion: v2 -appVersion: 14.5.0 -dependencies: -- name: common - repository: https://charts.bitnami.com/bitnami - tags: - - bitnami-common - version: 2.x.x -description: PostgreSQL (Postgres) is an open source object-relational database known - for reliability and data integrity. ACID-compliant, it supports foreign keys, joins, - views, triggers and stored procedures. -home: https://github.com/bitnami/charts/tree/main/bitnami/postgresql -icon: https://bitnami.com/assets/stacks/postgresql/img/postgresql-stack-220x234.png -keywords: -- postgresql -- postgres -- database -- sql -- replication -- cluster -maintainers: -- name: Bitnami - url: https://github.com/bitnami/charts -name: postgresql -sources: -- https://github.com/bitnami/containers/tree/main/bitnami/postgresql -- https://www.postgresql.org/ -version: 11.9.13 diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/README.md b/manifests/helm/kong/2.46.0/charts/postgresql/README.md deleted file mode 100644 index 28eed1c..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/README.md +++ /dev/null @@ -1,683 +0,0 @@ - - -# PostgreSQL packaged by Bitnami - -PostgreSQL (Postgres) is an open source object-relational database known for reliability and data integrity. ACID-compliant, it supports foreign keys, joins, views, triggers and stored procedures. - -[Overview of PostgreSQL](http://www.postgresql.org) - -Trademarks: This software listing is packaged by Bitnami. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. - -## TL;DR - -```bash -helm repo add my-repo https://charts.bitnami.com/bitnami -helm install my-release my-repo/postgresql -``` - -## Introduction - -This chart bootstraps a [PostgreSQL](https://github.com/bitnami/containers/tree/main/bitnami/postgresql) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. - -For HA, please see [this repo](https://github.com/bitnami/charts/tree/main/bitnami/postgresql-ha) - -Bitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters. - -## Prerequisites - -- Kubernetes 1.19+ -- Helm 3.2.0+ -- PV provisioner support in the underlying infrastructure - -## Installing the Chart - -To install the chart with the release name `my-release`: - -```bash -helm install my-release my-repo/postgresql -``` - -The command deploys PostgreSQL on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation. - -> **Tip**: List all releases using `helm list` - -## Uninstalling the Chart - -To uninstall/delete the `my-release` deployment: - -```console -helm delete my-release -``` - -The command removes all the Kubernetes components but PVC's associated with the chart and deletes the release. - -To delete the PVC's associated with `my-release`: - -```bash -kubectl delete pvc -l release=my-release -``` - -> **Note**: Deleting the PVC's will delete postgresql data as well. Please be cautious before doing it. - -## Parameters - -### Global parameters - -| Name | Description | Value | -| ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- | -| `global.imageRegistry` | Global Docker image registry | `""` | -| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` | -| `global.storageClass` | Global StorageClass for Persistent Volume(s) | `""` | -| `global.postgresql.auth.postgresPassword` | Password for the "postgres" admin user (overrides `auth.postgresPassword`) | `""` | -| `global.postgresql.auth.username` | Name for a custom user to create (overrides `auth.username`) | `""` | -| `global.postgresql.auth.password` | Password for the custom user to create (overrides `auth.password`) | `""` | -| `global.postgresql.auth.database` | Name for a custom database to create (overrides `auth.database`) | `""` | -| `global.postgresql.auth.existingSecret` | Name of existing secret to use for PostgreSQL credentials (overrides `auth.existingSecret`). | `""` | -| `global.postgresql.auth.secretKeys.adminPasswordKey` | Name of key in existing secret to use for PostgreSQL credentials (overrides `auth.secretKeys.adminPasswordKey`). Only used when `global.postgresql.auth.existingSecret` is set. | `""` | -| `global.postgresql.auth.secretKeys.userPasswordKey` | Name of key in existing secret to use for PostgreSQL credentials (overrides `auth.secretKeys.userPasswordKey`). Only used when `global.postgresql.auth.existingSecret` is set. | `""` | -| `global.postgresql.auth.secretKeys.replicationPasswordKey` | Name of key in existing secret to use for PostgreSQL credentials (overrides `auth.secretKeys.replicationPasswordKey`). Only used when `global.postgresql.auth.existingSecret` is set. | `""` | -| `global.postgresql.service.ports.postgresql` | PostgreSQL service port (overrides `service.ports.postgresql`) | `""` | - - -### Common parameters - -| Name | Description | Value | -| ------------------------ | -------------------------------------------------------------------------------------------- | --------------- | -| `kubeVersion` | Override Kubernetes version | `""` | -| `nameOverride` | String to partially override common.names.fullname template (will maintain the release name) | `""` | -| `fullnameOverride` | String to fully override common.names.fullname template | `""` | -| `clusterDomain` | Kubernetes Cluster Domain | `cluster.local` | -| `extraDeploy` | Array of extra objects to deploy with the release (evaluated as a template) | `[]` | -| `commonLabels` | Add labels to all the deployed resources | `{}` | -| `commonAnnotations` | Add annotations to all the deployed resources | `{}` | -| `diagnosticMode.enabled` | Enable diagnostic mode (all probes will be disabled and the command will be overridden) | `false` | -| `diagnosticMode.command` | Command to override all containers in the statefulset | `["sleep"]` | -| `diagnosticMode.args` | Args to override all containers in the statefulset | `["infinity"]` | - - -### PostgreSQL common parameters - -| Name | Description | Value | -| ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- | -| `image.registry` | PostgreSQL image registry | `docker.io` | -| `image.repository` | PostgreSQL image repository | `bitnami/postgresql` | -| `image.tag` | PostgreSQL image tag (immutable tags are recommended) | `14.5.0-debian-11-r35` | -| `image.digest` | PostgreSQL image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | -| `image.pullPolicy` | PostgreSQL image pull policy | `IfNotPresent` | -| `image.pullSecrets` | Specify image pull secrets | `[]` | -| `image.debug` | Specify if debug values should be set | `false` | -| `auth.enablePostgresUser` | Assign a password to the "postgres" admin user. Otherwise, remote access will be blocked for this user | `true` | -| `auth.postgresPassword` | Password for the "postgres" admin user. Ignored if `auth.existingSecret` with key `postgres-password` is provided | `""` | -| `auth.username` | Name for a custom user to create | `""` | -| `auth.password` | Password for the custom user to create. Ignored if `auth.existingSecret` with key `password` is provided | `""` | -| `auth.database` | Name for a custom database to create | `""` | -| `auth.replicationUsername` | Name of the replication user | `repl_user` | -| `auth.replicationPassword` | Password for the replication user. Ignored if `auth.existingSecret` with key `replication-password` is provided | `""` | -| `auth.existingSecret` | Name of existing secret to use for PostgreSQL credentials. `auth.postgresPassword`, `auth.password`, and `auth.replicationPassword` will be ignored and picked up from this secret. The secret might also contains the key `ldap-password` if LDAP is enabled. `ldap.bind_password` will be ignored and picked from this secret in this case. | `""` | -| `auth.secretKeys.adminPasswordKey` | Name of key in existing secret to use for PostgreSQL credentials. Only used when `auth.existingSecret` is set. | `postgres-password` | -| `auth.secretKeys.userPasswordKey` | Name of key in existing secret to use for PostgreSQL credentials. Only used when `auth.existingSecret` is set. | `password` | -| `auth.secretKeys.replicationPasswordKey` | Name of key in existing secret to use for PostgreSQL credentials. Only used when `auth.existingSecret` is set. | `replication-password` | -| `auth.usePasswordFiles` | Mount credentials as a files instead of using an environment variable | `false` | -| `architecture` | PostgreSQL architecture (`standalone` or `replication`) | `standalone` | -| `replication.synchronousCommit` | Set synchronous commit mode. Allowed values: `on`, `remote_apply`, `remote_write`, `local` and `off` | `off` | -| `replication.numSynchronousReplicas` | Number of replicas that will have synchronous replication. Note: Cannot be greater than `readReplicas.replicaCount`. | `0` | -| `replication.applicationName` | Cluster application name. Useful for advanced replication settings | `my_application` | -| `containerPorts.postgresql` | PostgreSQL container port | `5432` | -| `audit.logHostname` | Log client hostnames | `false` | -| `audit.logConnections` | Add client log-in operations to the log file | `false` | -| `audit.logDisconnections` | Add client log-outs operations to the log file | `false` | -| `audit.pgAuditLog` | Add operations to log using the pgAudit extension | `""` | -| `audit.pgAuditLogCatalog` | Log catalog using pgAudit | `off` | -| `audit.clientMinMessages` | Message log level to share with the user | `error` | -| `audit.logLinePrefix` | Template for log line prefix (default if not set) | `""` | -| `audit.logTimezone` | Timezone for the log timestamps | `""` | -| `ldap.enabled` | Enable LDAP support | `false` | -| `ldap.server` | IP address or name of the LDAP server. | `""` | -| `ldap.port` | Port number on the LDAP server to connect to | `""` | -| `ldap.prefix` | String to prepend to the user name when forming the DN to bind | `""` | -| `ldap.suffix` | String to append to the user name when forming the DN to bind | `""` | -| `ldap.basedn` | Root DN to begin the search for the user in | `""` | -| `ldap.binddn` | DN of user to bind to LDAP | `""` | -| `ldap.bindpw` | Password for the user to bind to LDAP | `""` | -| `ldap.searchAttribute` | Attribute to match against the user name in the search | `""` | -| `ldap.searchFilter` | The search filter to use when doing search+bind authentication | `""` | -| `ldap.scheme` | Set to `ldaps` to use LDAPS | `""` | -| `ldap.tls.enabled` | Se to true to enable TLS encryption | `false` | -| `ldap.uri` | LDAP URL beginning in the form `ldap[s]://host[:port]/basedn`. If provided, all the other LDAP parameters will be ignored. | `""` | -| `postgresqlDataDir` | PostgreSQL data dir folder | `/bitnami/postgresql/data` | -| `postgresqlSharedPreloadLibraries` | Shared preload libraries (comma-separated list) | `pgaudit` | -| `shmVolume.enabled` | Enable emptyDir volume for /dev/shm for PostgreSQL pod(s) | `true` | -| `shmVolume.sizeLimit` | Set this to enable a size limit on the shm tmpfs | `""` | -| `tls.enabled` | Enable TLS traffic support | `false` | -| `tls.autoGenerated` | Generate automatically self-signed TLS certificates | `false` | -| `tls.preferServerCiphers` | Whether to use the server's TLS cipher preferences rather than the client's | `true` | -| `tls.certificatesSecret` | Name of an existing secret that contains the certificates | `""` | -| `tls.certFilename` | Certificate filename | `""` | -| `tls.certKeyFilename` | Certificate key filename | `""` | -| `tls.certCAFilename` | CA Certificate filename | `""` | -| `tls.crlFilename` | File containing a Certificate Revocation List | `""` | - - -### PostgreSQL Primary parameters - -| Name | Description | Value | -| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | --------------------- | -| `primary.name` | Name of the primary database (eg primary, master, leader, ...) | `primary` | -| `primary.configuration` | PostgreSQL Primary main configuration to be injected as ConfigMap | `""` | -| `primary.pgHbaConfiguration` | PostgreSQL Primary client authentication configuration | `""` | -| `primary.existingConfigmap` | Name of an existing ConfigMap with PostgreSQL Primary configuration | `""` | -| `primary.extendedConfiguration` | Extended PostgreSQL Primary configuration (appended to main or default configuration) | `""` | -| `primary.existingExtendedConfigmap` | Name of an existing ConfigMap with PostgreSQL Primary extended configuration | `""` | -| `primary.initdb.args` | PostgreSQL initdb extra arguments | `""` | -| `primary.initdb.postgresqlWalDir` | Specify a custom location for the PostgreSQL transaction log | `""` | -| `primary.initdb.scripts` | Dictionary of initdb scripts | `{}` | -| `primary.initdb.scriptsConfigMap` | ConfigMap with scripts to be run at first boot | `""` | -| `primary.initdb.scriptsSecret` | Secret with scripts to be run at first boot (in case it contains sensitive information) | `""` | -| `primary.initdb.user` | Specify the PostgreSQL username to execute the initdb scripts | `""` | -| `primary.initdb.password` | Specify the PostgreSQL password to execute the initdb scripts | `""` | -| `primary.standby.enabled` | Whether to enable current cluster's primary as standby server of another cluster or not | `false` | -| `primary.standby.primaryHost` | The Host of replication primary in the other cluster | `""` | -| `primary.standby.primaryPort` | The Port of replication primary in the other cluster | `""` | -| `primary.extraEnvVars` | Array with extra environment variables to add to PostgreSQL Primary nodes | `[]` | -| `primary.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for PostgreSQL Primary nodes | `""` | -| `primary.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for PostgreSQL Primary nodes | `""` | -| `primary.command` | Override default container command (useful when using custom images) | `[]` | -| `primary.args` | Override default container args (useful when using custom images) | `[]` | -| `primary.livenessProbe.enabled` | Enable livenessProbe on PostgreSQL Primary containers | `true` | -| `primary.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `30` | -| `primary.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | -| `primary.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `5` | -| `primary.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `6` | -| `primary.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | -| `primary.readinessProbe.enabled` | Enable readinessProbe on PostgreSQL Primary containers | `true` | -| `primary.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `5` | -| `primary.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | -| `primary.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `5` | -| `primary.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `6` | -| `primary.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | -| `primary.startupProbe.enabled` | Enable startupProbe on PostgreSQL Primary containers | `false` | -| `primary.startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `30` | -| `primary.startupProbe.periodSeconds` | Period seconds for startupProbe | `10` | -| `primary.startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `1` | -| `primary.startupProbe.failureThreshold` | Failure threshold for startupProbe | `15` | -| `primary.startupProbe.successThreshold` | Success threshold for startupProbe | `1` | -| `primary.customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | -| `primary.customReadinessProbe` | Custom readinessProbe that overrides the default one | `{}` | -| `primary.customStartupProbe` | Custom startupProbe that overrides the default one | `{}` | -| `primary.lifecycleHooks` | for the PostgreSQL Primary container to automate configuration before or after startup | `{}` | -| `primary.resources.limits` | The resources limits for the PostgreSQL Primary containers | `{}` | -| `primary.resources.requests.memory` | The requested memory for the PostgreSQL Primary containers | `256Mi` | -| `primary.resources.requests.cpu` | The requested cpu for the PostgreSQL Primary containers | `250m` | -| `primary.podSecurityContext.enabled` | Enable security context | `true` | -| `primary.podSecurityContext.fsGroup` | Group ID for the pod | `1001` | -| `primary.containerSecurityContext.enabled` | Enable container security context | `true` | -| `primary.containerSecurityContext.runAsUser` | User ID for the container | `1001` | -| `primary.hostAliases` | PostgreSQL primary pods host aliases | `[]` | -| `primary.hostNetwork` | Specify if host network should be enabled for PostgreSQL pod (postgresql primary) | `false` | -| `primary.hostIPC` | Specify if host IPC should be enabled for PostgreSQL pod (postgresql primary) | `false` | -| `primary.labels` | Map of labels to add to the statefulset (postgresql primary) | `{}` | -| `primary.annotations` | Annotations for PostgreSQL primary pods | `{}` | -| `primary.podLabels` | Map of labels to add to the pods (postgresql primary) | `{}` | -| `primary.podAnnotations` | Map of annotations to add to the pods (postgresql primary) | `{}` | -| `primary.podAffinityPreset` | PostgreSQL primary pod affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` | `""` | -| `primary.podAntiAffinityPreset` | PostgreSQL primary pod anti-affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` | `soft` | -| `primary.nodeAffinityPreset.type` | PostgreSQL primary node affinity preset type. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` | `""` | -| `primary.nodeAffinityPreset.key` | PostgreSQL primary node label key to match Ignored if `primary.affinity` is set. | `""` | -| `primary.nodeAffinityPreset.values` | PostgreSQL primary node label values to match. Ignored if `primary.affinity` is set. | `[]` | -| `primary.affinity` | Affinity for PostgreSQL primary pods assignment | `{}` | -| `primary.nodeSelector` | Node labels for PostgreSQL primary pods assignment | `{}` | -| `primary.tolerations` | Tolerations for PostgreSQL primary pods assignment | `[]` | -| `primary.topologySpreadConstraints` | Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template | `[]` | -| `primary.priorityClassName` | Priority Class to use for each pod (postgresql primary) | `""` | -| `primary.schedulerName` | Use an alternate scheduler, e.g. "stork". | `""` | -| `primary.terminationGracePeriodSeconds` | Seconds PostgreSQL primary pod needs to terminate gracefully | `""` | -| `primary.updateStrategy.type` | PostgreSQL Primary statefulset strategy type | `RollingUpdate` | -| `primary.updateStrategy.rollingUpdate` | PostgreSQL Primary statefulset rolling update configuration parameters | `{}` | -| `primary.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the PostgreSQL Primary container(s) | `[]` | -| `primary.extraVolumes` | Optionally specify extra list of additional volumes for the PostgreSQL Primary pod(s) | `[]` | -| `primary.sidecars` | Add additional sidecar containers to the PostgreSQL Primary pod(s) | `[]` | -| `primary.initContainers` | Add additional init containers to the PostgreSQL Primary pod(s) | `[]` | -| `primary.extraPodSpec` | Optionally specify extra PodSpec for the PostgreSQL Primary pod(s) | `{}` | -| `primary.service.type` | Kubernetes Service type | `ClusterIP` | -| `primary.service.ports.postgresql` | PostgreSQL service port | `5432` | -| `primary.service.nodePorts.postgresql` | Node port for PostgreSQL | `""` | -| `primary.service.clusterIP` | Static clusterIP or None for headless services | `""` | -| `primary.service.annotations` | Annotations for PostgreSQL primary service | `{}` | -| `primary.service.loadBalancerIP` | Load balancer IP if service type is `LoadBalancer` | `""` | -| `primary.service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | -| `primary.service.loadBalancerSourceRanges` | Addresses that are allowed when service is LoadBalancer | `[]` | -| `primary.service.extraPorts` | Extra ports to expose in the PostgreSQL primary service | `[]` | -| `primary.service.sessionAffinity` | Session Affinity for Kubernetes service, can be "None" or "ClientIP" | `None` | -| `primary.service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` | -| `primary.persistence.enabled` | Enable PostgreSQL Primary data persistence using PVC | `true` | -| `primary.persistence.existingClaim` | Name of an existing PVC to use | `""` | -| `primary.persistence.mountPath` | The path the volume will be mounted at | `/bitnami/postgresql` | -| `primary.persistence.subPath` | The subdirectory of the volume to mount to | `""` | -| `primary.persistence.storageClass` | PVC Storage Class for PostgreSQL Primary data volume | `""` | -| `primary.persistence.accessModes` | PVC Access Mode for PostgreSQL volume | `["ReadWriteOnce"]` | -| `primary.persistence.size` | PVC Storage Request for PostgreSQL volume | `8Gi` | -| `primary.persistence.annotations` | Annotations for the PVC | `{}` | -| `primary.persistence.labels` | Labels for the PVC | `{}` | -| `primary.persistence.selector` | Selector to match an existing Persistent Volume (this value is evaluated as a template) | `{}` | -| `primary.persistence.dataSource` | Custom PVC data source | `{}` | - - -### PostgreSQL read only replica parameters (only used when `architecture` is set to `replication`) - -| Name | Description | Value | -| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | --------------------- | -| `readReplicas.name` | Name of the read replicas database (eg secondary, slave, ...) | `read` | -| `readReplicas.replicaCount` | Number of PostgreSQL read only replicas | `1` | -| `readReplicas.extendedConfiguration` | Extended PostgreSQL read only replicas configuration (appended to main or default configuration) | `""` | -| `readReplicas.extraEnvVars` | Array with extra environment variables to add to PostgreSQL read only nodes | `[]` | -| `readReplicas.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for PostgreSQL read only nodes | `""` | -| `readReplicas.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for PostgreSQL read only nodes | `""` | -| `readReplicas.command` | Override default container command (useful when using custom images) | `[]` | -| `readReplicas.args` | Override default container args (useful when using custom images) | `[]` | -| `readReplicas.livenessProbe.enabled` | Enable livenessProbe on PostgreSQL read only containers | `true` | -| `readReplicas.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `30` | -| `readReplicas.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | -| `readReplicas.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `5` | -| `readReplicas.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `6` | -| `readReplicas.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | -| `readReplicas.readinessProbe.enabled` | Enable readinessProbe on PostgreSQL read only containers | `true` | -| `readReplicas.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `5` | -| `readReplicas.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | -| `readReplicas.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `5` | -| `readReplicas.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `6` | -| `readReplicas.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | -| `readReplicas.startupProbe.enabled` | Enable startupProbe on PostgreSQL read only containers | `false` | -| `readReplicas.startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `30` | -| `readReplicas.startupProbe.periodSeconds` | Period seconds for startupProbe | `10` | -| `readReplicas.startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `1` | -| `readReplicas.startupProbe.failureThreshold` | Failure threshold for startupProbe | `15` | -| `readReplicas.startupProbe.successThreshold` | Success threshold for startupProbe | `1` | -| `readReplicas.customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | -| `readReplicas.customReadinessProbe` | Custom readinessProbe that overrides the default one | `{}` | -| `readReplicas.customStartupProbe` | Custom startupProbe that overrides the default one | `{}` | -| `readReplicas.lifecycleHooks` | for the PostgreSQL read only container to automate configuration before or after startup | `{}` | -| `readReplicas.resources.limits` | The resources limits for the PostgreSQL read only containers | `{}` | -| `readReplicas.resources.requests.memory` | The requested memory for the PostgreSQL read only containers | `256Mi` | -| `readReplicas.resources.requests.cpu` | The requested cpu for the PostgreSQL read only containers | `250m` | -| `readReplicas.podSecurityContext.enabled` | Enable security context | `true` | -| `readReplicas.podSecurityContext.fsGroup` | Group ID for the pod | `1001` | -| `readReplicas.containerSecurityContext.enabled` | Enable container security context | `true` | -| `readReplicas.containerSecurityContext.runAsUser` | User ID for the container | `1001` | -| `readReplicas.hostAliases` | PostgreSQL read only pods host aliases | `[]` | -| `readReplicas.hostNetwork` | Specify if host network should be enabled for PostgreSQL pod (PostgreSQL read only) | `false` | -| `readReplicas.hostIPC` | Specify if host IPC should be enabled for PostgreSQL pod (postgresql primary) | `false` | -| `readReplicas.labels` | Map of labels to add to the statefulset (PostgreSQL read only) | `{}` | -| `readReplicas.annotations` | Annotations for PostgreSQL read only pods | `{}` | -| `readReplicas.podLabels` | Map of labels to add to the pods (PostgreSQL read only) | `{}` | -| `readReplicas.podAnnotations` | Map of annotations to add to the pods (PostgreSQL read only) | `{}` | -| `readReplicas.podAffinityPreset` | PostgreSQL read only pod affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` | `""` | -| `readReplicas.podAntiAffinityPreset` | PostgreSQL read only pod anti-affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` | `soft` | -| `readReplicas.nodeAffinityPreset.type` | PostgreSQL read only node affinity preset type. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` | `""` | -| `readReplicas.nodeAffinityPreset.key` | PostgreSQL read only node label key to match Ignored if `primary.affinity` is set. | `""` | -| `readReplicas.nodeAffinityPreset.values` | PostgreSQL read only node label values to match. Ignored if `primary.affinity` is set. | `[]` | -| `readReplicas.affinity` | Affinity for PostgreSQL read only pods assignment | `{}` | -| `readReplicas.nodeSelector` | Node labels for PostgreSQL read only pods assignment | `{}` | -| `readReplicas.tolerations` | Tolerations for PostgreSQL read only pods assignment | `[]` | -| `readReplicas.topologySpreadConstraints` | Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template | `[]` | -| `readReplicas.priorityClassName` | Priority Class to use for each pod (PostgreSQL read only) | `""` | -| `readReplicas.schedulerName` | Use an alternate scheduler, e.g. "stork". | `""` | -| `readReplicas.terminationGracePeriodSeconds` | Seconds PostgreSQL read only pod needs to terminate gracefully | `""` | -| `readReplicas.updateStrategy.type` | PostgreSQL read only statefulset strategy type | `RollingUpdate` | -| `readReplicas.updateStrategy.rollingUpdate` | PostgreSQL read only statefulset rolling update configuration parameters | `{}` | -| `readReplicas.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the PostgreSQL read only container(s) | `[]` | -| `readReplicas.extraVolumes` | Optionally specify extra list of additional volumes for the PostgreSQL read only pod(s) | `[]` | -| `readReplicas.sidecars` | Add additional sidecar containers to the PostgreSQL read only pod(s) | `[]` | -| `readReplicas.initContainers` | Add additional init containers to the PostgreSQL read only pod(s) | `[]` | -| `readReplicas.extraPodSpec` | Optionally specify extra PodSpec for the PostgreSQL read only pod(s) | `{}` | -| `readReplicas.service.type` | Kubernetes Service type | `ClusterIP` | -| `readReplicas.service.ports.postgresql` | PostgreSQL service port | `5432` | -| `readReplicas.service.nodePorts.postgresql` | Node port for PostgreSQL | `""` | -| `readReplicas.service.clusterIP` | Static clusterIP or None for headless services | `""` | -| `readReplicas.service.annotations` | Annotations for PostgreSQL read only service | `{}` | -| `readReplicas.service.loadBalancerIP` | Load balancer IP if service type is `LoadBalancer` | `""` | -| `readReplicas.service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | -| `readReplicas.service.loadBalancerSourceRanges` | Addresses that are allowed when service is LoadBalancer | `[]` | -| `readReplicas.service.extraPorts` | Extra ports to expose in the PostgreSQL read only service | `[]` | -| `readReplicas.service.sessionAffinity` | Session Affinity for Kubernetes service, can be "None" or "ClientIP" | `None` | -| `readReplicas.service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` | -| `readReplicas.persistence.enabled` | Enable PostgreSQL read only data persistence using PVC | `true` | -| `readReplicas.persistence.existingClaim` | Name of an existing PVC to use | `""` | -| `readReplicas.persistence.mountPath` | The path the volume will be mounted at | `/bitnami/postgresql` | -| `readReplicas.persistence.subPath` | The subdirectory of the volume to mount to | `""` | -| `readReplicas.persistence.storageClass` | PVC Storage Class for PostgreSQL read only data volume | `""` | -| `readReplicas.persistence.accessModes` | PVC Access Mode for PostgreSQL volume | `["ReadWriteOnce"]` | -| `readReplicas.persistence.size` | PVC Storage Request for PostgreSQL volume | `8Gi` | -| `readReplicas.persistence.annotations` | Annotations for the PVC | `{}` | -| `readReplicas.persistence.labels` | Labels for the PVC | `{}` | -| `readReplicas.persistence.selector` | Selector to match an existing Persistent Volume (this value is evaluated as a template) | `{}` | -| `readReplicas.persistence.dataSource` | Custom PVC data source | `{}` | - - -### NetworkPolicy parameters - -| Name | Description | Value | -| ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -| `networkPolicy.enabled` | Enable network policies | `false` | -| `networkPolicy.metrics.enabled` | Enable network policies for metrics (prometheus) | `false` | -| `networkPolicy.metrics.namespaceSelector` | Monitoring namespace selector labels. These labels will be used to identify the prometheus' namespace. | `{}` | -| `networkPolicy.metrics.podSelector` | Monitoring pod selector labels. These labels will be used to identify the Prometheus pods. | `{}` | -| `networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled` | Enable ingress rule that makes PostgreSQL primary node only accessible from a particular origin. | `false` | -| `networkPolicy.ingressRules.primaryAccessOnlyFrom.namespaceSelector` | Namespace selector label that is allowed to access the PostgreSQL primary node. This label will be used to identified the allowed namespace(s). | `{}` | -| `networkPolicy.ingressRules.primaryAccessOnlyFrom.podSelector` | Pods selector label that is allowed to access the PostgreSQL primary node. This label will be used to identified the allowed pod(s). | `{}` | -| `networkPolicy.ingressRules.primaryAccessOnlyFrom.customRules` | Custom network policy for the PostgreSQL primary node. | `{}` | -| `networkPolicy.ingressRules.readReplicasAccessOnlyFrom.enabled` | Enable ingress rule that makes PostgreSQL read-only nodes only accessible from a particular origin. | `false` | -| `networkPolicy.ingressRules.readReplicasAccessOnlyFrom.namespaceSelector` | Namespace selector label that is allowed to access the PostgreSQL read-only nodes. This label will be used to identified the allowed namespace(s). | `{}` | -| `networkPolicy.ingressRules.readReplicasAccessOnlyFrom.podSelector` | Pods selector label that is allowed to access the PostgreSQL read-only nodes. This label will be used to identified the allowed pod(s). | `{}` | -| `networkPolicy.ingressRules.readReplicasAccessOnlyFrom.customRules` | Custom network policy for the PostgreSQL read-only nodes. | `{}` | -| `networkPolicy.egressRules.denyConnectionsToExternal` | Enable egress rule that denies outgoing traffic outside the cluster, except for DNS (port 53). | `false` | -| `networkPolicy.egressRules.customRules` | Custom network policy rule | `{}` | - - -### Volume Permissions parameters - -| Name | Description | Value | -| ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | -| `volumePermissions.enabled` | Enable init container that changes the owner and group of the persistent volume | `false` | -| `volumePermissions.image.registry` | Init container volume-permissions image registry | `docker.io` | -| `volumePermissions.image.repository` | Init container volume-permissions image repository | `bitnami/bitnami-shell` | -| `volumePermissions.image.tag` | Init container volume-permissions image tag (immutable tags are recommended) | `11-debian-11-r45` | -| `volumePermissions.image.digest` | Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | -| `volumePermissions.image.pullPolicy` | Init container volume-permissions image pull policy | `IfNotPresent` | -| `volumePermissions.image.pullSecrets` | Init container volume-permissions image pull secrets | `[]` | -| `volumePermissions.resources.limits` | Init container volume-permissions resource limits | `{}` | -| `volumePermissions.resources.requests` | Init container volume-permissions resource requests | `{}` | -| `volumePermissions.containerSecurityContext.runAsUser` | User ID for the init container | `0` | - - -### Other Parameters - -| Name | Description | Value | -| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -| `serviceAccount.create` | Enable creation of ServiceAccount for PostgreSQL pod | `false` | -| `serviceAccount.name` | The name of the ServiceAccount to use. | `""` | -| `serviceAccount.automountServiceAccountToken` | Allows auto mount of ServiceAccountToken on the serviceAccount created | `true` | -| `serviceAccount.annotations` | Additional custom annotations for the ServiceAccount | `{}` | -| `rbac.create` | Create Role and RoleBinding (required for PSP to work) | `false` | -| `rbac.rules` | Custom RBAC rules to set | `[]` | -| `psp.create` | Whether to create a PodSecurityPolicy. WARNING: PodSecurityPolicy is deprecated in Kubernetes v1.21 or later, unavailable in v1.25 or later | `false` | - - -### Metrics Parameters - -| Name | Description | Value | -| ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------- | -| `metrics.enabled` | Start a prometheus exporter | `false` | -| `metrics.image.registry` | PostgreSQL Prometheus Exporter image registry | `docker.io` | -| `metrics.image.repository` | PostgreSQL Prometheus Exporter image repository | `bitnami/postgres-exporter` | -| `metrics.image.tag` | PostgreSQL Prometheus Exporter image tag (immutable tags are recommended) | `0.11.1-debian-11-r22` | -| `metrics.image.digest` | PostgreSQL image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | -| `metrics.image.pullPolicy` | PostgreSQL Prometheus Exporter image pull policy | `IfNotPresent` | -| `metrics.image.pullSecrets` | Specify image pull secrets | `[]` | -| `metrics.customMetrics` | Define additional custom metrics | `{}` | -| `metrics.extraEnvVars` | Extra environment variables to add to PostgreSQL Prometheus exporter | `[]` | -| `metrics.containerSecurityContext.enabled` | Enable PostgreSQL Prometheus exporter containers' Security Context | `true` | -| `metrics.containerSecurityContext.runAsUser` | Set PostgreSQL Prometheus exporter containers' Security Context runAsUser | `1001` | -| `metrics.containerSecurityContext.runAsNonRoot` | Set PostgreSQL Prometheus exporter containers' Security Context runAsNonRoot | `true` | -| `metrics.livenessProbe.enabled` | Enable livenessProbe on PostgreSQL Prometheus exporter containers | `true` | -| `metrics.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `5` | -| `metrics.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | -| `metrics.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `5` | -| `metrics.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `6` | -| `metrics.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | -| `metrics.readinessProbe.enabled` | Enable readinessProbe on PostgreSQL Prometheus exporter containers | `true` | -| `metrics.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `5` | -| `metrics.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | -| `metrics.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `5` | -| `metrics.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `6` | -| `metrics.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | -| `metrics.startupProbe.enabled` | Enable startupProbe on PostgreSQL Prometheus exporter containers | `false` | -| `metrics.startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `10` | -| `metrics.startupProbe.periodSeconds` | Period seconds for startupProbe | `10` | -| `metrics.startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `1` | -| `metrics.startupProbe.failureThreshold` | Failure threshold for startupProbe | `15` | -| `metrics.startupProbe.successThreshold` | Success threshold for startupProbe | `1` | -| `metrics.customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | -| `metrics.customReadinessProbe` | Custom readinessProbe that overrides the default one | `{}` | -| `metrics.customStartupProbe` | Custom startupProbe that overrides the default one | `{}` | -| `metrics.containerPorts.metrics` | PostgreSQL Prometheus exporter metrics container port | `9187` | -| `metrics.resources.limits` | The resources limits for the PostgreSQL Prometheus exporter container | `{}` | -| `metrics.resources.requests` | The requested resources for the PostgreSQL Prometheus exporter container | `{}` | -| `metrics.service.ports.metrics` | PostgreSQL Prometheus Exporter service port | `9187` | -| `metrics.service.clusterIP` | Static clusterIP or None for headless services | `""` | -| `metrics.service.sessionAffinity` | Control where client requests go, to the same pod or round-robin | `None` | -| `metrics.service.annotations` | Annotations for Prometheus to auto-discover the metrics endpoint | `{}` | -| `metrics.serviceMonitor.enabled` | Create ServiceMonitor Resource for scraping metrics using Prometheus Operator | `false` | -| `metrics.serviceMonitor.namespace` | Namespace for the ServiceMonitor Resource (defaults to the Release Namespace) | `""` | -| `metrics.serviceMonitor.interval` | Interval at which metrics should be scraped. | `""` | -| `metrics.serviceMonitor.scrapeTimeout` | Timeout after which the scrape is ended | `""` | -| `metrics.serviceMonitor.labels` | Additional labels that can be used so ServiceMonitor will be discovered by Prometheus | `{}` | -| `metrics.serviceMonitor.selector` | Prometheus instance selector labels | `{}` | -| `metrics.serviceMonitor.relabelings` | RelabelConfigs to apply to samples before scraping | `[]` | -| `metrics.serviceMonitor.metricRelabelings` | MetricRelabelConfigs to apply to samples before ingestion | `[]` | -| `metrics.serviceMonitor.honorLabels` | Specify honorLabels parameter to add the scrape endpoint | `false` | -| `metrics.serviceMonitor.jobLabel` | The name of the label on the target service to use as the job name in prometheus. | `""` | -| `metrics.prometheusRule.enabled` | Create a PrometheusRule for Prometheus Operator | `false` | -| `metrics.prometheusRule.namespace` | Namespace for the PrometheusRule Resource (defaults to the Release Namespace) | `""` | -| `metrics.prometheusRule.labels` | Additional labels that can be used so PrometheusRule will be discovered by Prometheus | `{}` | -| `metrics.prometheusRule.rules` | PrometheusRule definitions | `[]` | - - -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, - -```bash -$ helm install my-release \ - --set auth.postgresPassword=secretpassword - my-repo/postgresql -``` - -The above command sets the PostgreSQL `postgres` account password to `secretpassword`. - -> NOTE: Once this chart is deployed, it is not possible to change the application's access credentials, such as usernames or passwords, using Helm. To change these application credentials after deployment, delete any persistent volumes (PVs) used by the chart and re-deploy it, or use the application's built-in administrative tools if available. - -> **Warning** Setting a password will be ignored on new installation in case when previous Posgresql release was deleted through the helm command. In that case, old PVC will have an old password, and setting it through helm won't take effect. Deleting persistent volumes (PVs) will solve the issue. Refer to [issue 2061](https://github.com/bitnami/charts/issues/2061) for more details - -Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, - -```bash -helm install my-release -f values.yaml my-repo/postgresql -``` - -> **Tip**: You can use the default [values.yaml](values.yaml) - -## Configuration and installation details - -### [Rolling VS Immutable tags](https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/) - -It is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image. - -Bitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist. - -### Customizing primary and read replica services in a replicated configuration - -At the top level, there is a service object which defines the services for both primary and readReplicas. For deeper customization, there are service objects for both the primary and read types individually. This allows you to override the values in the top level service object so that the primary and read can be of different service types and with different clusterIPs / nodePorts. Also in the case you want the primary and read to be of type nodePort, you will need to set the nodePorts to different values to prevent a collision. The values that are deeper in the primary.service or readReplicas.service objects will take precedence over the top level service object. - -### Use a different PostgreSQL version - -To modify the application version used in this chart, specify a different version of the image using the `image.tag` parameter and/or a different repository using the `image.repository` parameter. Refer to the [chart documentation for more information on these parameters and how to use them with images from a private registry](https://docs.bitnami.com/kubernetes/infrastructure/postgresql/configuration/change-image-version/). - -### postgresql.conf / pg_hba.conf files as configMap - -This helm chart also supports to customize the PostgreSQL configuration file. You can add additional PostgreSQL configuration parameters using the `primary.extendedConfiguration`/`readReplicas.extendedConfiguration` parameters as a string. Alternatively, to replace the entire default configuration use `primary.configuration`. - -You can also add a custom pg_hba.conf using the `primary.pgHbaConfiguration` parameter. - -In addition to these options, you can also set an external ConfigMap with all the configuration files. This is done by setting the `primary.existingConfigmap` parameter. Note that this will override the two previous options. - -### Initialize a fresh instance - -The [Bitnami PostgreSQL](https://github.com/bitnami/containers/tree/main/bitnami/postgresql) image allows you to use your custom scripts to initialize a fresh instance. In order to execute the scripts, you can specify custom scripts using the `primary.initdb.scripts` parameter as a string. - -In addition, you can also set an external ConfigMap with all the initialization scripts. This is done by setting the `primary.initdb.scriptsConfigMap` parameter. Note that this will override the two previous options. If your initialization scripts contain sensitive information such as credentials or passwords, you can use the `primary.initdb.scriptsSecret` parameter. - -The allowed extensions are `.sh`, `.sql` and `.sql.gz`. - -### Securing traffic using TLS - -TLS support can be enabled in the chart by specifying the `tls.` parameters while creating a release. The following parameters should be configured to properly enable the TLS support in the chart: - -- `tls.enabled`: Enable TLS support. Defaults to `false` -- `tls.certificatesSecret`: Name of an existing secret that contains the certificates. No defaults. -- `tls.certFilename`: Certificate filename. No defaults. -- `tls.certKeyFilename`: Certificate key filename. No defaults. - -For example: - -- First, create the secret with the cetificates files: - - ```console - kubectl create secret generic certificates-tls-secret --from-file=./cert.crt --from-file=./cert.key --from-file=./ca.crt - ``` - -- Then, use the following parameters: - - ```console - volumePermissions.enabled=true - tls.enabled=true - tls.certificatesSecret="certificates-tls-secret" - tls.certFilename="cert.crt" - tls.certKeyFilename="cert.key" - ``` - - > Note TLS and VolumePermissions: PostgreSQL requires certain permissions on sensitive files (such as certificate keys) to start up. Due to an on-going [issue](https://github.com/kubernetes/kubernetes/issues/57923) regarding kubernetes permissions and the use of `containerSecurityContext.runAsUser`, you must enable `volumePermissions` to ensure everything works as expected. - -### Sidecars - -If you need additional containers to run within the same pod as PostgreSQL (e.g. an additional metrics or logging exporter), you can do so via the `sidecars` config parameter. Simply define your container according to the Kubernetes container spec. - -```yaml -# For the PostgreSQL primary -primary: - sidecars: - - name: your-image-name - image: your-image - imagePullPolicy: Always - ports: - - name: portname - containerPort: 1234 -# For the PostgreSQL replicas -readReplicas: - sidecars: - - name: your-image-name - image: your-image - imagePullPolicy: Always - ports: - - name: portname - containerPort: 1234 -``` - -### Metrics - -The chart optionally can start a metrics exporter for [prometheus](https://prometheus.io). The metrics endpoint (port 9187) is not exposed and it is expected that the metrics are collected from inside the k8s cluster using something similar as the described in the [example Prometheus scrape configuration](https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml). - -The exporter allows to create custom metrics from additional SQL queries. See the Chart's `values.yaml` for an example and consult the [exporters documentation](https://github.com/wrouesnel/postgres_exporter#adding-new-metrics-via-a-config-file) for more details. - -### Use of global variables - -In more complex scenarios, we may have the following tree of dependencies - -``` - +--------------+ - | | - +------------+ Chart 1 +-----------+ - | | | | - | --------+------+ | - | | | - | | | - | | | - | | | - v v v -+-------+------+ +--------+------+ +--------+------+ -| | | | | | -| PostgreSQL | | Sub-chart 1 | | Sub-chart 2 | -| | | | | | -+--------------+ +---------------+ +---------------+ -``` - -The three charts below depend on the parent chart Chart 1. However, subcharts 1 and 2 may need to connect to PostgreSQL as well. In order to do so, subcharts 1 and 2 need to know the PostgreSQL credentials, so one option for deploying could be deploy Chart 1 with the following parameters: - -``` -postgresql.auth.username=testuser -subchart1.postgresql.auth.username=testuser -subchart2.postgresql.auth.username=testuser -postgresql.auth.password=testpass -subchart1.postgresql.auth.password=testpass -subchart2.postgresql.auth.password=testpass -postgresql.auth.database=testdb -subchart1.postgresql.auth.database=testdb -subchart2.postgresql.auth.database=testdb -``` - -If the number of dependent sub-charts increases, installing the chart with parameters can become increasingly difficult. An alternative would be to set the credentials using global variables as follows: - -``` -global.postgresql.auth.username=testuser -global.postgresql.auth.password=testpass -global.postgresql.auth.database=testdb -``` - -This way, the credentials will be available in all of the subcharts. - -## Persistence - -The [Bitnami PostgreSQL](https://github.com/bitnami/containers/tree/main/bitnami/postgresql) image stores the PostgreSQL data and configurations at the `/bitnami/postgresql` path of the container. - -Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube. -See the [Parameters](#parameters) section to configure the PVC or to disable persistence. - -If you already have data in it, you will fail to sync to standby nodes for all commits, details can refer to the [code present in the container repository](https://github.com/bitnami/containers/tree/main/bitnami/postgresql). If you need to use those data, please covert them to sql and import after `helm install` finished. - -## NetworkPolicy - -To enable network policy for PostgreSQL, install [a networking plugin that implements the Kubernetes NetworkPolicy spec](https://kubernetes.io/docs/tasks/administer-cluster/declare-network-policy#before-you-begin), and set `networkPolicy.enabled` to `true`. - -For Kubernetes v1.5 & v1.6, you must also turn on NetworkPolicy by setting the DefaultDeny namespace annotation. Note: this will enforce policy for _all_ pods in the namespace: - -```bash -kubectl annotate namespace default "net.beta.kubernetes.io/network-policy={\"ingress\":{\"isolation\":\"DefaultDeny\"}}" -``` - -With NetworkPolicy enabled, traffic will be limited to just port 5432. - -For more precise policy, set `networkPolicy.allowExternal=false`. This will only allow pods with the generated client label to connect to PostgreSQL. -This label will be displayed in the output of a successful install. - -## Differences between Bitnami PostgreSQL image and [Docker Official](https://hub.docker.com/_/postgres) image - -- The Docker Official PostgreSQL image does not support replication. If you pass any replication environment variable, this would be ignored. The only environment variables supported by the Docker Official image are POSTGRES_USER, POSTGRES_DB, POSTGRES_PASSWORD, POSTGRES_INITDB_ARGS, POSTGRES_INITDB_WALDIR and PGDATA. All the remaining environment variables are specific to the Bitnami PostgreSQL image. -- The Bitnami PostgreSQL image is non-root by default. This requires that you run the pod with `securityContext` and updates the permissions of the volume with an `initContainer`. A key benefit of this configuration is that the pod follows security best practices and is prepared to run on Kubernetes distributions with hard security constraints like OpenShift. -- For OpenShift, one may either define the runAsUser and fsGroup accordingly, or try this more dynamic option: volumePermissions.securityContext.runAsUser="auto",securityContext.enabled=false,containerSecurityContext.enabled=false,shmVolume.chmod.enabled=false - -### Setting Pod's affinity - -This chart allows you to set your custom affinity using the `XXX.affinity` parameter(s). Find more information about Pod's affinity in the [kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity). - -As an alternative, you can use of the preset configurations for pod affinity, pod anti-affinity, and node affinity available at the [bitnami/common](https://github.com/bitnami/charts/tree/main/bitnami/common#affinities) chart. To do so, set the `XXX.podAffinityPreset`, `XXX.podAntiAffinityPreset`, or `XXX.nodeAffinityPreset` parameters. - -## Troubleshooting - -Find more information about how to deal with common errors related to Bitnami's Helm charts in [this troubleshooting guide](https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues). - -## Upgrading - -Refer to the [chart documentation for more information about how to upgrade from previous releases](https://docs.bitnami.com/kubernetes/infrastructure/postgresql/administration/upgrade/). - -## License - -Copyright © 2022 Bitnami - -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. \ No newline at end of file diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/.helmignore b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/.helmignore deleted file mode 100644 index 50af031..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/.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/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/Chart.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/Chart.yaml deleted file mode 100644 index 4721c32..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/Chart.yaml +++ /dev/null @@ -1,23 +0,0 @@ -annotations: - category: Infrastructure -apiVersion: v2 -appVersion: 2.0.4 -description: A Library Helm Chart for grouping common logic between bitnami charts. - This chart is not deployable by itself. -home: https://github.com/bitnami/charts/tree/main/bitnami/common -icon: https://bitnami.com/downloads/logos/bitnami-mark.png -keywords: -- common -- helper -- template -- function -- bitnami -maintainers: -- name: Bitnami - url: https://github.com/bitnami/charts -name: common -sources: -- https://github.com/bitnami/charts -- https://www.bitnami.com/ -type: library -version: 2.0.4 diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/README.md b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/README.md deleted file mode 100644 index a2ecd60..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/README.md +++ /dev/null @@ -1,350 +0,0 @@ -# Bitnami Common Library Chart - -A [Helm Library Chart](https://helm.sh/docs/topics/library_charts/#helm) for grouping common logic between bitnami charts. - -## TL;DR - -```yaml -dependencies: - - name: common - version: 1.x.x - repository: https://charts.bitnami.com/bitnami -``` - -```bash -$ helm dependency update -``` - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "common.names.fullname" . }} -data: - myvalue: "Hello World" -``` - -## Introduction - -This chart provides a common template helpers which can be used to develop new charts using [Helm](https://helm.sh) package manager. - -Bitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters. - -## Prerequisites - -- Kubernetes 1.19+ -- Helm 3.2.0+ - -## Parameters - -The following table lists the helpers available in the library which are scoped in different sections. - -### Affinities - -| Helper identifier | Description | Expected Input | -|-------------------------------|------------------------------------------------------|------------------------------------------------| -| `common.affinities.nodes.soft` | Return a soft nodeAffinity definition | `dict "key" "FOO" "values" (list "BAR" "BAZ")` | -| `common.affinities.nodes.hard` | Return a hard nodeAffinity definition | `dict "key" "FOO" "values" (list "BAR" "BAZ")` | -| `common.affinities.pods.soft` | Return a soft podAffinity/podAntiAffinity definition | `dict "component" "FOO" "context" $` | -| `common.affinities.pods.hard` | Return a hard podAffinity/podAntiAffinity definition | `dict "component" "FOO" "context" $` | - -### Capabilities - -| Helper identifier | Description | Expected Input | -|------------------------------------------------|------------------------------------------------------------------------------------------------|-------------------| -| `common.capabilities.kubeVersion` | Return the target Kubernetes version (using client default if .Values.kubeVersion is not set). | `.` Chart context | -| `common.capabilities.cronjob.apiVersion` | Return the appropriate apiVersion for cronjob. | `.` Chart context | -| `common.capabilities.deployment.apiVersion` | Return the appropriate apiVersion for deployment. | `.` Chart context | -| `common.capabilities.statefulset.apiVersion` | Return the appropriate apiVersion for statefulset. | `.` Chart context | -| `common.capabilities.ingress.apiVersion` | Return the appropriate apiVersion for ingress. | `.` Chart context | -| `common.capabilities.rbac.apiVersion` | Return the appropriate apiVersion for RBAC resources. | `.` Chart context | -| `common.capabilities.crd.apiVersion` | Return the appropriate apiVersion for CRDs. | `.` Chart context | -| `common.capabilities.policy.apiVersion` | Return the appropriate apiVersion for podsecuritypolicy. | `.` Chart context | -| `common.capabilities.networkPolicy.apiVersion` | Return the appropriate apiVersion for networkpolicy. | `.` Chart context | -| `common.capabilities.apiService.apiVersion` | Return the appropriate apiVersion for APIService. | `.` Chart context | -| `common.capabilities.hpa.apiVersion` | Return the appropriate apiVersion for Horizontal Pod Autoscaler | `.` Chart context | -| `common.capabilities.supportsHelmVersion` | Returns true if the used Helm version is 3.3+ | `.` Chart context | - -### Errors - -| Helper identifier | Description | Expected Input | -|-----------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------| -| `common.errors.upgrade.passwords.empty` | It will ensure required passwords are given when we are upgrading a chart. If `validationErrors` is not empty it will throw an error and will stop the upgrade action. | `dict "validationErrors" (list $validationError00 $validationError01) "context" $` | - -### Images - -| Helper identifier | Description | Expected Input | -|-----------------------------|------------------------------------------------------|---------------------------------------------------------------------------------------------------------| -| `common.images.image` | Return the proper and full image name | `dict "imageRoot" .Values.path.to.the.image "global" $`, see [ImageRoot](#imageroot) for the structure. | -| `common.images.pullSecrets` | Return the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead) | `dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "global" .Values.global` | -| `common.images.renderPullSecrets` | Return the proper Docker Image Registry Secret Names (evaluates values as templates) | `dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "context" $` | - -### Ingress - -| Helper identifier | Description | Expected Input | -|-------------------------------------------|-------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `common.ingress.backend` | Generate a proper Ingress backend entry depending on the API version | `dict "serviceName" "foo" "servicePort" "bar"`, see the [Ingress deprecation notice](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for the syntax differences | -| `common.ingress.supportsPathType` | Prints "true" if the pathType field is supported | `.` Chart context | -| `common.ingress.supportsIngressClassname` | Prints "true" if the ingressClassname field is supported | `.` Chart context | -| `common.ingress.certManagerRequest` | Prints "true" if required cert-manager annotations for TLS signed certificates are set in the Ingress annotations | `dict "annotations" .Values.path.to.the.ingress.annotations` | - -### Labels - -| Helper identifier | Description | Expected Input | -|-----------------------------|-----------------------------------------------------------------------------|-------------------| -| `common.labels.standard` | Return Kubernetes standard labels | `.` Chart context | -| `common.labels.matchLabels` | Labels to use on `deploy.spec.selector.matchLabels` and `svc.spec.selector` | `.` Chart context | - -### Names - -| Helper identifier | Description | Expected Input | -|-----------------------------------|-----------------------------------------------------------------------|-------------------| -| `common.names.name` | Expand the name of the chart or use `.Values.nameOverride` | `.` Chart context | -| `common.names.fullname` | Create a default fully qualified app name. | `.` Chart context | -| `common.names.namespace` | Allow the release namespace to be overridden | `.` Chart context | -| `common.names.fullname.namespace` | Create a fully qualified app name adding the installation's namespace | `.` Chart context | -| `common.names.chart` | Chart name plus version | `.` Chart context | - -### Secrets - -| Helper identifier | Description | Expected Input | -|---------------------------|--------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `common.secrets.name` | Generate the name of the secret. | `dict "existingSecret" .Values.path.to.the.existingSecret "defaultNameSuffix" "mySuffix" "context" $` see [ExistingSecret](#existingsecret) for the structure. | -| `common.secrets.key` | Generate secret key. | `dict "existingSecret" .Values.path.to.the.existingSecret "key" "keyName"` see [ExistingSecret](#existingsecret) for the structure. | -| `common.passwords.manage` | Generate secret password or retrieve one if already created. | `dict "secret" "secret-name" "key" "keyName" "providedValues" (list "path.to.password1" "path.to.password2") "length" 10 "strong" false "chartName" "chartName" "context" $`, length, strong and chartNAme fields are optional. | -| `common.secrets.exists` | Returns whether a previous generated secret already exists. | `dict "secret" "secret-name" "context" $` | - -### Storage - -| Helper identifier | Description | Expected Input | -|-------------------------------|---------------------------------------|---------------------------------------------------------------------------------------------------------------------| -| `common.storage.class` | Return the proper Storage Class | `dict "persistence" .Values.path.to.the.persistence "global" $`, see [Persistence](#persistence) for the structure. | - -### TplValues - -| Helper identifier | Description | Expected Input | -|---------------------------|----------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------| -| `common.tplvalues.render` | Renders a value that contains template | `dict "value" .Values.path.to.the.Value "context" $`, value is the value should rendered as template, context frequently is the chart context `$` or `.` | - -### Utils - -| Helper identifier | Description | Expected Input | -|--------------------------------|------------------------------------------------------------------------------------------|------------------------------------------------------------------------| -| `common.utils.fieldToEnvVar` | Build environment variable name given a field. | `dict "field" "my-password"` | -| `common.utils.secret.getvalue` | Print instructions to get a secret value. | `dict "secret" "secret-name" "field" "secret-value-field" "context" $` | -| `common.utils.getValueFromKey` | Gets a value from `.Values` object given its key path | `dict "key" "path.to.key" "context" $` | -| `common.utils.getKeyFromList` | Returns first `.Values` key with a defined value or first of the list if all non-defined | `dict "keys" (list "path.to.key1" "path.to.key2") "context" $` | - -### Validations - -| Helper identifier | Description | Expected Input | -|--------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `common.validations.values.single.empty` | Validate a value must not be empty. | `dict "valueKey" "path.to.value" "secret" "secret.name" "field" "my-password" "subchart" "subchart" "context" $` secret, field and subchart are optional. In case they are given, the helper will generate a how to get instruction. See [ValidateValue](#validatevalue) | -| `common.validations.values.multiple.empty` | Validate a multiple values must not be empty. It returns a shared error for all the values. | `dict "required" (list $validateValueConf00 $validateValueConf01) "context" $`. See [ValidateValue](#validatevalue) | -| `common.validations.values.mariadb.passwords` | This helper will ensure required password for MariaDB are not empty. It returns a shared error for all the values. | `dict "secret" "mariadb-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use mariadb chart and the helper. | -| `common.validations.values.mysql.passwords` | This helper will ensure required password for MySQL are not empty. It returns a shared error for all the values. | `dict "secret" "mysql-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use mysql chart and the helper. | -| `common.validations.values.postgresql.passwords` | This helper will ensure required password for PostgreSQL are not empty. It returns a shared error for all the values. | `dict "secret" "postgresql-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use postgresql chart and the helper. | -| `common.validations.values.redis.passwords` | This helper will ensure required password for Redis® are not empty. It returns a shared error for all the values. | `dict "secret" "redis-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use redis chart and the helper. | -| `common.validations.values.cassandra.passwords` | This helper will ensure required password for Cassandra are not empty. It returns a shared error for all the values. | `dict "secret" "cassandra-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use cassandra chart and the helper. | -| `common.validations.values.mongodb.passwords` | This helper will ensure required password for MongoDB® are not empty. It returns a shared error for all the values. | `dict "secret" "mongodb-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use mongodb chart and the helper. | - -### Warnings - -| Helper identifier | Description | Expected Input | -|------------------------------|----------------------------------|------------------------------------------------------------| -| `common.warnings.rollingTag` | Warning about using rolling tag. | `ImageRoot` see [ImageRoot](#imageroot) for the structure. | - -## Special input schemas - -### ImageRoot - -```yaml -registry: - type: string - description: Docker registry where the image is located - example: docker.io - -repository: - type: string - description: Repository and image name - example: bitnami/nginx - -tag: - type: string - description: image tag - example: 1.16.1-debian-10-r63 - -pullPolicy: - type: string - description: Specify a imagePullPolicy. Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' - -pullSecrets: - type: array - items: - type: string - description: Optionally specify an array of imagePullSecrets (evaluated as templates). - -debug: - type: boolean - description: Set to true if you would like to see extra information on logs - example: false - -## An instance would be: -# registry: docker.io -# repository: bitnami/nginx -# tag: 1.16.1-debian-10-r63 -# pullPolicy: IfNotPresent -# debug: false -``` - -### Persistence - -```yaml -enabled: - type: boolean - description: Whether enable persistence. - example: true - -storageClass: - type: string - description: Ghost data Persistent Volume Storage Class, If set to "-", storageClassName: "" which disables dynamic provisioning. - example: "-" - -accessMode: - type: string - description: Access mode for the Persistent Volume Storage. - example: ReadWriteOnce - -size: - type: string - description: Size the Persistent Volume Storage. - example: 8Gi - -path: - type: string - description: Path to be persisted. - example: /bitnami - -## An instance would be: -# enabled: true -# storageClass: "-" -# accessMode: ReadWriteOnce -# size: 8Gi -# path: /bitnami -``` - -### ExistingSecret - -```yaml -name: - type: string - description: Name of the existing secret. - example: mySecret -keyMapping: - description: Mapping between the expected key name and the name of the key in the existing secret. - type: object - -## An instance would be: -# name: mySecret -# keyMapping: -# password: myPasswordKey -``` - -#### Example of use - -When we store sensitive data for a deployment in a secret, some times we want to give to users the possibility of using theirs existing secrets. - -```yaml -# templates/secret.yaml ---- -apiVersion: v1 -kind: Secret -metadata: - name: {{ include "common.names.fullname" . }} - labels: - app: {{ include "common.names.fullname" . }} -type: Opaque -data: - password: {{ .Values.password | b64enc | quote }} - -# templates/dpl.yaml ---- -... - env: - - name: PASSWORD - valueFrom: - secretKeyRef: - name: {{ include "common.secrets.name" (dict "existingSecret" .Values.existingSecret "context" $) }} - key: {{ include "common.secrets.key" (dict "existingSecret" .Values.existingSecret "key" "password") }} -... - -# values.yaml ---- -name: mySecret -keyMapping: - password: myPasswordKey -``` - -### ValidateValue - -#### NOTES.txt - -```console -{{- $validateValueConf00 := (dict "valueKey" "path.to.value00" "secret" "secretName" "field" "password-00") -}} -{{- $validateValueConf01 := (dict "valueKey" "path.to.value01" "secret" "secretName" "field" "password-01") -}} - -{{ include "common.validations.values.multiple.empty" (dict "required" (list $validateValueConf00 $validateValueConf01) "context" $) }} -``` - -If we force those values to be empty we will see some alerts - -```console -$ helm install test mychart --set path.to.value00="",path.to.value01="" - 'path.to.value00' must not be empty, please add '--set path.to.value00=$PASSWORD_00' to the command. To get the current value: - - export PASSWORD_00=$(kubectl get secret --namespace default secretName -o jsonpath="{.data.password-00}" | base64 -d) - - 'path.to.value01' must not be empty, please add '--set path.to.value01=$PASSWORD_01' to the command. To get the current value: - - export PASSWORD_01=$(kubectl get secret --namespace default secretName -o jsonpath="{.data.password-01}" | base64 -d) -``` - -## Upgrading - -### To 1.0.0 - -[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL. - -**What changes were introduced in this major version?** - -- Previous versions of this Helm Chart use `apiVersion: v1` (installable by both Helm 2 and 3), this Helm Chart was updated to `apiVersion: v2` (installable by Helm 3 only). [Here](https://helm.sh/docs/topics/charts/#the-apiversion-field) you can find more information about the `apiVersion` field. -- Use `type: library`. [Here](https://v3.helm.sh/docs/faq/#library-chart-support) you can find more information. -- The different fields present in the *Chart.yaml* file has been ordered alphabetically in a homogeneous way for all the Bitnami Helm Charts - -**Considerations when upgrading to this version** - -- If you want to upgrade to this version from a previous one installed with Helm v3, you shouldn't face any issues -- If you want to upgrade to this version using Helm v2, this scenario is not supported as this version doesn't support Helm v2 anymore -- If you installed the previous version with Helm v2 and wants to upgrade to this version with Helm v3, please refer to the [official Helm documentation](https://helm.sh/docs/topics/v2_v3_migration/#migration-use-cases) about migrating from Helm v2 to v3 - -**Useful links** - -- https://docs.bitnami.com/tutorials/resolve-helm2-helm3-post-migration-issues/ -- https://helm.sh/docs/topics/v2_v3_migration/ -- https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/ - -## License - -Copyright © 2022 Bitnami - -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/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_affinities.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_affinities.tpl deleted file mode 100644 index 2387be2..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_affinities.tpl +++ /dev/null @@ -1,102 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Return a soft nodeAffinity definition -{{ include "common.affinities.nodes.soft" (dict "key" "FOO" "values" (list "BAR" "BAZ")) -}} -*/}} -{{- define "common.affinities.nodes.soft" -}} -preferredDuringSchedulingIgnoredDuringExecution: - - preference: - matchExpressions: - - key: {{ .key }} - operator: In - values: - {{- range .values }} - - {{ . | quote }} - {{- end }} - weight: 1 -{{- end -}} - -{{/* -Return a hard nodeAffinity definition -{{ include "common.affinities.nodes.hard" (dict "key" "FOO" "values" (list "BAR" "BAZ")) -}} -*/}} -{{- define "common.affinities.nodes.hard" -}} -requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: {{ .key }} - operator: In - values: - {{- range .values }} - - {{ . | quote }} - {{- end }} -{{- end -}} - -{{/* -Return a nodeAffinity definition -{{ include "common.affinities.nodes" (dict "type" "soft" "key" "FOO" "values" (list "BAR" "BAZ")) -}} -*/}} -{{- define "common.affinities.nodes" -}} - {{- if eq .type "soft" }} - {{- include "common.affinities.nodes.soft" . -}} - {{- else if eq .type "hard" }} - {{- include "common.affinities.nodes.hard" . -}} - {{- end -}} -{{- end -}} - -{{/* -Return a soft podAffinity/podAntiAffinity definition -{{ include "common.affinities.pods.soft" (dict "component" "FOO" "extraMatchLabels" .Values.extraMatchLabels "context" $) -}} -*/}} -{{- define "common.affinities.pods.soft" -}} -{{- $component := default "" .component -}} -{{- $extraMatchLabels := default (dict) .extraMatchLabels -}} -preferredDuringSchedulingIgnoredDuringExecution: - - podAffinityTerm: - labelSelector: - matchLabels: {{- (include "common.labels.matchLabels" .context) | nindent 10 }} - {{- if not (empty $component) }} - {{ printf "app.kubernetes.io/component: %s" $component }} - {{- end }} - {{- range $key, $value := $extraMatchLabels }} - {{ $key }}: {{ $value | quote }} - {{- end }} - namespaces: - - {{ include "common.names.namespace" .context | quote }} - topologyKey: kubernetes.io/hostname - weight: 1 -{{- end -}} - -{{/* -Return a hard podAffinity/podAntiAffinity definition -{{ include "common.affinities.pods.hard" (dict "component" "FOO" "extraMatchLabels" .Values.extraMatchLabels "context" $) -}} -*/}} -{{- define "common.affinities.pods.hard" -}} -{{- $component := default "" .component -}} -{{- $extraMatchLabels := default (dict) .extraMatchLabels -}} -requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchLabels: {{- (include "common.labels.matchLabels" .context) | nindent 8 }} - {{- if not (empty $component) }} - {{ printf "app.kubernetes.io/component: %s" $component }} - {{- end }} - {{- range $key, $value := $extraMatchLabels }} - {{ $key }}: {{ $value | quote }} - {{- end }} - namespaces: - - {{ include "common.names.namespace" .context | quote }} - topologyKey: kubernetes.io/hostname -{{- end -}} - -{{/* -Return a podAffinity/podAntiAffinity definition -{{ include "common.affinities.pods" (dict "type" "soft" "key" "FOO" "values" (list "BAR" "BAZ")) -}} -*/}} -{{- define "common.affinities.pods" -}} - {{- if eq .type "soft" }} - {{- include "common.affinities.pods.soft" . -}} - {{- else if eq .type "hard" }} - {{- include "common.affinities.pods.hard" . -}} - {{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_capabilities.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_capabilities.tpl deleted file mode 100644 index 9d9b760..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_capabilities.tpl +++ /dev/null @@ -1,154 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Return the target Kubernetes version -*/}} -{{- define "common.capabilities.kubeVersion" -}} -{{- if .Values.global }} - {{- if .Values.global.kubeVersion }} - {{- .Values.global.kubeVersion -}} - {{- else }} - {{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}} - {{- end -}} -{{- else }} -{{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}} -{{- end -}} -{{- end -}} - -{{/* -Return the appropriate apiVersion for poddisruptionbudget. -*/}} -{{- define "common.capabilities.policy.apiVersion" -}} -{{- if semverCompare "<1.21-0" (include "common.capabilities.kubeVersion" .) -}} -{{- print "policy/v1beta1" -}} -{{- else -}} -{{- print "policy/v1" -}} -{{- end -}} -{{- end -}} - -{{/* -Return the appropriate apiVersion for networkpolicy. -*/}} -{{- define "common.capabilities.networkPolicy.apiVersion" -}} -{{- if semverCompare "<1.7-0" (include "common.capabilities.kubeVersion" .) -}} -{{- print "extensions/v1beta1" -}} -{{- else -}} -{{- print "networking.k8s.io/v1" -}} -{{- end -}} -{{- end -}} - -{{/* -Return the appropriate apiVersion for cronjob. -*/}} -{{- define "common.capabilities.cronjob.apiVersion" -}} -{{- if semverCompare "<1.21-0" (include "common.capabilities.kubeVersion" .) -}} -{{- print "batch/v1beta1" -}} -{{- else -}} -{{- print "batch/v1" -}} -{{- end -}} -{{- end -}} - -{{/* -Return the appropriate apiVersion for deployment. -*/}} -{{- define "common.capabilities.deployment.apiVersion" -}} -{{- if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} -{{- print "extensions/v1beta1" -}} -{{- else -}} -{{- print "apps/v1" -}} -{{- end -}} -{{- end -}} - -{{/* -Return the appropriate apiVersion for statefulset. -*/}} -{{- define "common.capabilities.statefulset.apiVersion" -}} -{{- if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} -{{- print "apps/v1beta1" -}} -{{- else -}} -{{- print "apps/v1" -}} -{{- end -}} -{{- end -}} - -{{/* -Return the appropriate apiVersion for ingress. -*/}} -{{- define "common.capabilities.ingress.apiVersion" -}} -{{- if .Values.ingress -}} -{{- if .Values.ingress.apiVersion -}} -{{- .Values.ingress.apiVersion -}} -{{- else if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} -{{- print "extensions/v1beta1" -}} -{{- else if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}} -{{- print "networking.k8s.io/v1beta1" -}} -{{- else -}} -{{- print "networking.k8s.io/v1" -}} -{{- end }} -{{- else if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} -{{- print "extensions/v1beta1" -}} -{{- else if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}} -{{- print "networking.k8s.io/v1beta1" -}} -{{- else -}} -{{- print "networking.k8s.io/v1" -}} -{{- end -}} -{{- end -}} - -{{/* -Return the appropriate apiVersion for RBAC resources. -*/}} -{{- define "common.capabilities.rbac.apiVersion" -}} -{{- if semverCompare "<1.17-0" (include "common.capabilities.kubeVersion" .) -}} -{{- print "rbac.authorization.k8s.io/v1beta1" -}} -{{- else -}} -{{- print "rbac.authorization.k8s.io/v1" -}} -{{- end -}} -{{- end -}} - -{{/* -Return the appropriate apiVersion for CRDs. -*/}} -{{- define "common.capabilities.crd.apiVersion" -}} -{{- if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}} -{{- print "apiextensions.k8s.io/v1beta1" -}} -{{- else -}} -{{- print "apiextensions.k8s.io/v1" -}} -{{- end -}} -{{- end -}} - -{{/* -Return the appropriate apiVersion for APIService. -*/}} -{{- define "common.capabilities.apiService.apiVersion" -}} -{{- if semverCompare "<1.10-0" (include "common.capabilities.kubeVersion" .) -}} -{{- print "apiregistration.k8s.io/v1beta1" -}} -{{- else -}} -{{- print "apiregistration.k8s.io/v1" -}} -{{- end -}} -{{- end -}} - -{{/* -Return the appropriate apiVersion for Horizontal Pod Autoscaler. -*/}} -{{- define "common.capabilities.hpa.apiVersion" -}} -{{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .context) -}} -{{- if .beta2 -}} -{{- print "autoscaling/v2beta2" -}} -{{- else -}} -{{- print "autoscaling/v2beta1" -}} -{{- end -}} -{{- else -}} -{{- print "autoscaling/v2" -}} -{{- end -}} -{{- end -}} - -{{/* -Returns true if the used Helm version is 3.3+. -A way to check the used Helm version was not introduced until version 3.3.0 with .Capabilities.HelmVersion, which contains an additional "{}}" structure. -This check is introduced as a regexMatch instead of {{ if .Capabilities.HelmVersion }} because checking for the key HelmVersion in <3.3 results in a "interface not found" error. -**To be removed when the catalog's minimun Helm version is 3.3** -*/}} -{{- define "common.capabilities.supportsHelmVersion" -}} -{{- if regexMatch "{(v[0-9])*[^}]*}}$" (.Capabilities | toString ) }} - {{- true -}} -{{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_errors.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_errors.tpl deleted file mode 100644 index a79cc2e..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_errors.tpl +++ /dev/null @@ -1,23 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Through error when upgrading using empty passwords values that must not be empty. - -Usage: -{{- $validationError00 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password00" "secret" "secretName" "field" "password-00") -}} -{{- $validationError01 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password01" "secret" "secretName" "field" "password-01") -}} -{{ include "common.errors.upgrade.passwords.empty" (dict "validationErrors" (list $validationError00 $validationError01) "context" $) }} - -Required password params: - - validationErrors - String - Required. List of validation strings to be return, if it is empty it won't throw error. - - context - Context - Required. Parent context. -*/}} -{{- define "common.errors.upgrade.passwords.empty" -}} - {{- $validationErrors := join "" .validationErrors -}} - {{- if and $validationErrors .context.Release.IsUpgrade -}} - {{- $errorString := "\nPASSWORDS ERROR: You must provide your current passwords when upgrading the release." -}} - {{- $errorString = print $errorString "\n Note that even after reinstallation, old credentials may be needed as they may be kept in persistent volume claims." -}} - {{- $errorString = print $errorString "\n Further information can be obtained at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases" -}} - {{- $errorString = print $errorString "\n%s" -}} - {{- printf $errorString $validationErrors | fail -}} - {{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_images.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_images.tpl deleted file mode 100644 index 46c659e..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_images.tpl +++ /dev/null @@ -1,76 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Return the proper image name -{{ include "common.images.image" ( dict "imageRoot" .Values.path.to.the.image "global" $) }} -*/}} -{{- define "common.images.image" -}} -{{- $registryName := .imageRoot.registry -}} -{{- $repositoryName := .imageRoot.repository -}} -{{- $separator := ":" -}} -{{- $termination := .imageRoot.tag | toString -}} -{{- if .global }} - {{- if .global.imageRegistry }} - {{- $registryName = .global.imageRegistry -}} - {{- end -}} -{{- end -}} -{{- if .imageRoot.digest }} - {{- $separator = "@" -}} - {{- $termination = .imageRoot.digest | toString -}} -{{- end -}} -{{- printf "%s/%s%s%s" $registryName $repositoryName $separator $termination -}} -{{- end -}} - -{{/* -Return the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead) -{{ include "common.images.pullSecrets" ( dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "global" .Values.global) }} -*/}} -{{- define "common.images.pullSecrets" -}} - {{- $pullSecrets := list }} - - {{- if .global }} - {{- range .global.imagePullSecrets -}} - {{- $pullSecrets = append $pullSecrets . -}} - {{- end -}} - {{- end -}} - - {{- range .images -}} - {{- range .pullSecrets -}} - {{- $pullSecrets = append $pullSecrets . -}} - {{- end -}} - {{- end -}} - - {{- if (not (empty $pullSecrets)) }} -imagePullSecrets: - {{- range $pullSecrets }} - - name: {{ . }} - {{- end }} - {{- end }} -{{- end -}} - -{{/* -Return the proper Docker Image Registry Secret Names evaluating values as templates -{{ include "common.images.renderPullSecrets" ( dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "context" $) }} -*/}} -{{- define "common.images.renderPullSecrets" -}} - {{- $pullSecrets := list }} - {{- $context := .context }} - - {{- if $context.Values.global }} - {{- range $context.Values.global.imagePullSecrets -}} - {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" . "context" $context)) -}} - {{- end -}} - {{- end -}} - - {{- range .images -}} - {{- range .pullSecrets -}} - {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" . "context" $context)) -}} - {{- end -}} - {{- end -}} - - {{- if (not (empty $pullSecrets)) }} -imagePullSecrets: - {{- range $pullSecrets }} - - name: {{ . }} - {{- end }} - {{- end }} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_ingress.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_ingress.tpl deleted file mode 100644 index 831da9c..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_ingress.tpl +++ /dev/null @@ -1,68 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Generate backend entry that is compatible with all Kubernetes API versions. - -Usage: -{{ include "common.ingress.backend" (dict "serviceName" "backendName" "servicePort" "backendPort" "context" $) }} - -Params: - - serviceName - String. Name of an existing service backend - - servicePort - String/Int. Port name (or number) of the service. It will be translated to different yaml depending if it is a string or an integer. - - context - Dict - Required. The context for the template evaluation. -*/}} -{{- define "common.ingress.backend" -}} -{{- $apiVersion := (include "common.capabilities.ingress.apiVersion" .context) -}} -{{- if or (eq $apiVersion "extensions/v1beta1") (eq $apiVersion "networking.k8s.io/v1beta1") -}} -serviceName: {{ .serviceName }} -servicePort: {{ .servicePort }} -{{- else -}} -service: - name: {{ .serviceName }} - port: - {{- if typeIs "string" .servicePort }} - name: {{ .servicePort }} - {{- else if or (typeIs "int" .servicePort) (typeIs "float64" .servicePort) }} - number: {{ .servicePort | int }} - {{- end }} -{{- end -}} -{{- end -}} - -{{/* -Print "true" if the API pathType field is supported -Usage: -{{ include "common.ingress.supportsPathType" . }} -*/}} -{{- define "common.ingress.supportsPathType" -}} -{{- if (semverCompare "<1.18-0" (include "common.capabilities.kubeVersion" .)) -}} -{{- print "false" -}} -{{- else -}} -{{- print "true" -}} -{{- end -}} -{{- end -}} - -{{/* -Returns true if the ingressClassname field is supported -Usage: -{{ include "common.ingress.supportsIngressClassname" . }} -*/}} -{{- define "common.ingress.supportsIngressClassname" -}} -{{- if semverCompare "<1.18-0" (include "common.capabilities.kubeVersion" .) -}} -{{- print "false" -}} -{{- else -}} -{{- print "true" -}} -{{- end -}} -{{- end -}} - -{{/* -Return true if cert-manager required annotations for TLS signed -certificates are set in the Ingress annotations -Ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations -Usage: -{{ include "common.ingress.certManagerRequest" ( dict "annotations" .Values.path.to.the.ingress.annotations ) }} -*/}} -{{- define "common.ingress.certManagerRequest" -}} -{{ if or (hasKey .annotations "cert-manager.io/cluster-issuer") (hasKey .annotations "cert-manager.io/issuer") (hasKey .annotations "kubernetes.io/tls-acme") }} - {{- true -}} -{{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_labels.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_labels.tpl deleted file mode 100644 index 252066c..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_labels.tpl +++ /dev/null @@ -1,18 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Kubernetes standard labels -*/}} -{{- define "common.labels.standard" -}} -app.kubernetes.io/name: {{ include "common.names.name" . }} -helm.sh/chart: {{ include "common.names.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{/* -Labels to use on deploy.spec.selector.matchLabels and svc.spec.selector -*/}} -{{- define "common.labels.matchLabels" -}} -app.kubernetes.io/name: {{ include "common.names.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_names.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_names.tpl deleted file mode 100644 index 1bdac8b..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_names.tpl +++ /dev/null @@ -1,70 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "common.names.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "common.names.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "common.names.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 a default fully qualified dependency 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. -Usage: -{{ include "common.names.dependency.fullname" (dict "chartName" "dependency-chart-name" "chartValues" .Values.dependency-chart "context" $) }} -*/}} -{{- define "common.names.dependency.fullname" -}} -{{- if .chartValues.fullnameOverride -}} -{{- .chartValues.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .chartName .chartValues.nameOverride -}} -{{- if contains $name .context.Release.Name -}} -{{- .context.Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .context.Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Allow the release namespace to be overridden for multi-namespace deployments in combined charts. -*/}} -{{- define "common.names.namespace" -}} -{{- if .Values.namespaceOverride -}} -{{- .Values.namespaceOverride -}} -{{- else -}} -{{- .Release.Namespace -}} -{{- end -}} -{{- end -}} - -{{/* -Create a fully qualified app name adding the installation's namespace. -*/}} -{{- define "common.names.fullname.namespace" -}} -{{- printf "%s-%s" (include "common.names.fullname" .) (include "common.names.namespace" .) | trunc 63 | trimSuffix "-" -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_secrets.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_secrets.tpl deleted file mode 100644 index fa18f73..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_secrets.tpl +++ /dev/null @@ -1,140 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Generate secret name. - -Usage: -{{ include "common.secrets.name" (dict "existingSecret" .Values.path.to.the.existingSecret "defaultNameSuffix" "mySuffix" "context" $) }} - -Params: - - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user - to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility. - +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret - - defaultNameSuffix - String - Optional. It is used only if we have several secrets in the same deployment. - - context - Dict - Required. The context for the template evaluation. -*/}} -{{- define "common.secrets.name" -}} -{{- $name := (include "common.names.fullname" .context) -}} - -{{- if .defaultNameSuffix -}} -{{- $name = printf "%s-%s" $name .defaultNameSuffix | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{- with .existingSecret -}} -{{- if not (typeIs "string" .) -}} -{{- with .name -}} -{{- $name = . -}} -{{- end -}} -{{- else -}} -{{- $name = . -}} -{{- end -}} -{{- end -}} - -{{- printf "%s" $name -}} -{{- end -}} - -{{/* -Generate secret key. - -Usage: -{{ include "common.secrets.key" (dict "existingSecret" .Values.path.to.the.existingSecret "key" "keyName") }} - -Params: - - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user - to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility. - +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret - - key - String - Required. Name of the key in the secret. -*/}} -{{- define "common.secrets.key" -}} -{{- $key := .key -}} - -{{- if .existingSecret -}} - {{- if not (typeIs "string" .existingSecret) -}} - {{- if .existingSecret.keyMapping -}} - {{- $key = index .existingSecret.keyMapping $.key -}} - {{- end -}} - {{- end }} -{{- end -}} - -{{- printf "%s" $key -}} -{{- end -}} - -{{/* -Generate secret password or retrieve one if already created. - -Usage: -{{ include "common.secrets.passwords.manage" (dict "secret" "secret-name" "key" "keyName" "providedValues" (list "path.to.password1" "path.to.password2") "length" 10 "strong" false "chartName" "chartName" "context" $) }} - -Params: - - secret - String - Required - Name of the 'Secret' resource where the password is stored. - - key - String - Required - Name of the key in the secret. - - providedValues - List - Required - The path to the validating value in the values.yaml, e.g: "mysql.password". Will pick first parameter with a defined value. - - length - int - Optional - Length of the generated random password. - - strong - Boolean - Optional - Whether to add symbols to the generated random password. - - chartName - String - Optional - Name of the chart used when said chart is deployed as a subchart. - - context - Context - Required - Parent context. - -The order in which this function returns a secret password: - 1. Already existing 'Secret' resource - (If a 'Secret' resource is found under the name provided to the 'secret' parameter to this function and that 'Secret' resource contains a key with the name passed as the 'key' parameter to this function then the value of this existing secret password will be returned) - 2. Password provided via the values.yaml - (If one of the keys passed to the 'providedValues' parameter to this function is a valid path to a key in the values.yaml and has a value, the value of the first key with a value will be returned) - 3. Randomly generated secret password - (A new random secret password with the length specified in the 'length' parameter will be generated and returned) - -*/}} -{{- define "common.secrets.passwords.manage" -}} - -{{- $password := "" }} -{{- $subchart := "" }} -{{- $chartName := default "" .chartName }} -{{- $passwordLength := default 10 .length }} -{{- $providedPasswordKey := include "common.utils.getKeyFromList" (dict "keys" .providedValues "context" $.context) }} -{{- $providedPasswordValue := include "common.utils.getValueFromKey" (dict "key" $providedPasswordKey "context" $.context) }} -{{- $secretData := (lookup "v1" "Secret" $.context.Release.Namespace .secret).data }} -{{- if $secretData }} - {{- if hasKey $secretData .key }} - {{- $password = index $secretData .key | quote }} - {{- else }} - {{- printf "\nPASSWORDS ERROR: The secret \"%s\" does not contain the key \"%s\"\n" .secret .key | fail -}} - {{- end -}} -{{- else if $providedPasswordValue }} - {{- $password = $providedPasswordValue | toString | b64enc | quote }} -{{- else }} - - {{- if .context.Values.enabled }} - {{- $subchart = $chartName }} - {{- end -}} - - {{- $requiredPassword := dict "valueKey" $providedPasswordKey "secret" .secret "field" .key "subchart" $subchart "context" $.context -}} - {{- $requiredPasswordError := include "common.validations.values.single.empty" $requiredPassword -}} - {{- $passwordValidationErrors := list $requiredPasswordError -}} - {{- include "common.errors.upgrade.passwords.empty" (dict "validationErrors" $passwordValidationErrors "context" $.context) -}} - - {{- if .strong }} - {{- $subStr := list (lower (randAlpha 1)) (randNumeric 1) (upper (randAlpha 1)) | join "_" }} - {{- $password = randAscii $passwordLength }} - {{- $password = regexReplaceAllLiteral "\\W" $password "@" | substr 5 $passwordLength }} - {{- $password = printf "%s%s" $subStr $password | toString | shuffle | b64enc | quote }} - {{- else }} - {{- $password = randAlphaNum $passwordLength | b64enc | quote }} - {{- end }} -{{- end -}} -{{- printf "%s" $password -}} -{{- end -}} - -{{/* -Returns whether a previous generated secret already exists - -Usage: -{{ include "common.secrets.exists" (dict "secret" "secret-name" "context" $) }} - -Params: - - secret - String - Required - Name of the 'Secret' resource where the password is stored. - - context - Context - Required - Parent context. -*/}} -{{- define "common.secrets.exists" -}} -{{- $secret := (lookup "v1" "Secret" $.context.Release.Namespace .secret) }} -{{- if $secret }} - {{- true -}} -{{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_storage.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_storage.tpl deleted file mode 100644 index 60e2a84..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_storage.tpl +++ /dev/null @@ -1,23 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Return the proper Storage Class -{{ include "common.storage.class" ( dict "persistence" .Values.path.to.the.persistence "global" $) }} -*/}} -{{- define "common.storage.class" -}} - -{{- $storageClass := .persistence.storageClass -}} -{{- if .global -}} - {{- if .global.storageClass -}} - {{- $storageClass = .global.storageClass -}} - {{- end -}} -{{- end -}} - -{{- if $storageClass -}} - {{- if (eq "-" $storageClass) -}} - {{- printf "storageClassName: \"\"" -}} - {{- else }} - {{- printf "storageClassName: %s" $storageClass -}} - {{- end -}} -{{- end -}} - -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_tplvalues.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_tplvalues.tpl deleted file mode 100644 index 2db1668..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_tplvalues.tpl +++ /dev/null @@ -1,13 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Renders a value that contains template. -Usage: -{{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $) }} -*/}} -{{- define "common.tplvalues.render" -}} - {{- if typeIs "string" .value }} - {{- tpl .value .context }} - {{- else }} - {{- tpl (.value | toYaml) .context }} - {{- end }} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_utils.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_utils.tpl deleted file mode 100644 index 8c22b2a..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_utils.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Print instructions to get a secret value. -Usage: -{{ include "common.utils.secret.getvalue" (dict "secret" "secret-name" "field" "secret-value-field" "context" $) }} -*/}} -{{- define "common.utils.secret.getvalue" -}} -{{- $varname := include "common.utils.fieldToEnvVar" . -}} -export {{ $varname }}=$(kubectl get secret --namespace {{ .context.Release.Namespace | quote }} {{ .secret }} -o jsonpath="{.data.{{ .field }}}" | base64 -d) -{{- end -}} - -{{/* -Build env var name given a field -Usage: -{{ include "common.utils.fieldToEnvVar" dict "field" "my-password" }} -*/}} -{{- define "common.utils.fieldToEnvVar" -}} - {{- $fieldNameSplit := splitList "-" .field -}} - {{- $upperCaseFieldNameSplit := list -}} - - {{- range $fieldNameSplit -}} - {{- $upperCaseFieldNameSplit = append $upperCaseFieldNameSplit ( upper . ) -}} - {{- end -}} - - {{ join "_" $upperCaseFieldNameSplit }} -{{- end -}} - -{{/* -Gets a value from .Values given -Usage: -{{ include "common.utils.getValueFromKey" (dict "key" "path.to.key" "context" $) }} -*/}} -{{- define "common.utils.getValueFromKey" -}} -{{- $splitKey := splitList "." .key -}} -{{- $value := "" -}} -{{- $latestObj := $.context.Values -}} -{{- range $splitKey -}} - {{- if not $latestObj -}} - {{- printf "please review the entire path of '%s' exists in values" $.key | fail -}} - {{- end -}} - {{- $value = ( index $latestObj . ) -}} - {{- $latestObj = $value -}} -{{- end -}} -{{- printf "%v" (default "" $value) -}} -{{- end -}} - -{{/* -Returns first .Values key with a defined value or first of the list if all non-defined -Usage: -{{ include "common.utils.getKeyFromList" (dict "keys" (list "path.to.key1" "path.to.key2") "context" $) }} -*/}} -{{- define "common.utils.getKeyFromList" -}} -{{- $key := first .keys -}} -{{- $reverseKeys := reverse .keys }} -{{- range $reverseKeys }} - {{- $value := include "common.utils.getValueFromKey" (dict "key" . "context" $.context ) }} - {{- if $value -}} - {{- $key = . }} - {{- end -}} -{{- end -}} -{{- printf "%s" $key -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_warnings.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_warnings.tpl deleted file mode 100644 index ae10fa4..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/_warnings.tpl +++ /dev/null @@ -1,14 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Warning about using rolling tag. -Usage: -{{ include "common.warnings.rollingTag" .Values.path.to.the.imageRoot }} -*/}} -{{- define "common.warnings.rollingTag" -}} - -{{- if and (contains "bitnami/" .repository) (not (.tag | toString | regexFind "-r\\d+$|sha256:")) }} -WARNING: Rolling tag detected ({{ .repository }}:{{ .tag }}), please note that it is strongly recommended to avoid using rolling tags in a production environment. -+info https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/ -{{- end }} - -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_cassandra.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_cassandra.tpl deleted file mode 100644 index ded1ae3..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_cassandra.tpl +++ /dev/null @@ -1,72 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Validate Cassandra required passwords are not empty. - -Usage: -{{ include "common.validations.values.cassandra.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} -Params: - - secret - String - Required. Name of the secret where Cassandra values are stored, e.g: "cassandra-passwords-secret" - - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false -*/}} -{{- define "common.validations.values.cassandra.passwords" -}} - {{- $existingSecret := include "common.cassandra.values.existingSecret" . -}} - {{- $enabled := include "common.cassandra.values.enabled" . -}} - {{- $dbUserPrefix := include "common.cassandra.values.key.dbUser" . -}} - {{- $valueKeyPassword := printf "%s.password" $dbUserPrefix -}} - - {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} - {{- $requiredPasswords := list -}} - - {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "cassandra-password" -}} - {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}} - - {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} - - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for existingSecret. - -Usage: -{{ include "common.cassandra.values.existingSecret" (dict "context" $) }} -Params: - - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false -*/}} -{{- define "common.cassandra.values.existingSecret" -}} - {{- if .subchart -}} - {{- .context.Values.cassandra.dbUser.existingSecret | quote -}} - {{- else -}} - {{- .context.Values.dbUser.existingSecret | quote -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for enabled cassandra. - -Usage: -{{ include "common.cassandra.values.enabled" (dict "context" $) }} -*/}} -{{- define "common.cassandra.values.enabled" -}} - {{- if .subchart -}} - {{- printf "%v" .context.Values.cassandra.enabled -}} - {{- else -}} - {{- printf "%v" (not .context.Values.enabled) -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for the key dbUser - -Usage: -{{ include "common.cassandra.values.key.dbUser" (dict "subchart" "true" "context" $) }} -Params: - - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false -*/}} -{{- define "common.cassandra.values.key.dbUser" -}} - {{- if .subchart -}} - cassandra.dbUser - {{- else -}} - dbUser - {{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_mariadb.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_mariadb.tpl deleted file mode 100644 index b6906ff..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_mariadb.tpl +++ /dev/null @@ -1,103 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Validate MariaDB required passwords are not empty. - -Usage: -{{ include "common.validations.values.mariadb.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} -Params: - - secret - String - Required. Name of the secret where MariaDB values are stored, e.g: "mysql-passwords-secret" - - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false -*/}} -{{- define "common.validations.values.mariadb.passwords" -}} - {{- $existingSecret := include "common.mariadb.values.auth.existingSecret" . -}} - {{- $enabled := include "common.mariadb.values.enabled" . -}} - {{- $architecture := include "common.mariadb.values.architecture" . -}} - {{- $authPrefix := include "common.mariadb.values.key.auth" . -}} - {{- $valueKeyRootPassword := printf "%s.rootPassword" $authPrefix -}} - {{- $valueKeyUsername := printf "%s.username" $authPrefix -}} - {{- $valueKeyPassword := printf "%s.password" $authPrefix -}} - {{- $valueKeyReplicationPassword := printf "%s.replicationPassword" $authPrefix -}} - - {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} - {{- $requiredPasswords := list -}} - - {{- $requiredRootPassword := dict "valueKey" $valueKeyRootPassword "secret" .secret "field" "mariadb-root-password" -}} - {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}} - - {{- $valueUsername := include "common.utils.getValueFromKey" (dict "key" $valueKeyUsername "context" .context) }} - {{- if not (empty $valueUsername) -}} - {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "mariadb-password" -}} - {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}} - {{- end -}} - - {{- if (eq $architecture "replication") -}} - {{- $requiredReplicationPassword := dict "valueKey" $valueKeyReplicationPassword "secret" .secret "field" "mariadb-replication-password" -}} - {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}} - {{- end -}} - - {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} - - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for existingSecret. - -Usage: -{{ include "common.mariadb.values.auth.existingSecret" (dict "context" $) }} -Params: - - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false -*/}} -{{- define "common.mariadb.values.auth.existingSecret" -}} - {{- if .subchart -}} - {{- .context.Values.mariadb.auth.existingSecret | quote -}} - {{- else -}} - {{- .context.Values.auth.existingSecret | quote -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for enabled mariadb. - -Usage: -{{ include "common.mariadb.values.enabled" (dict "context" $) }} -*/}} -{{- define "common.mariadb.values.enabled" -}} - {{- if .subchart -}} - {{- printf "%v" .context.Values.mariadb.enabled -}} - {{- else -}} - {{- printf "%v" (not .context.Values.enabled) -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for architecture - -Usage: -{{ include "common.mariadb.values.architecture" (dict "subchart" "true" "context" $) }} -Params: - - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false -*/}} -{{- define "common.mariadb.values.architecture" -}} - {{- if .subchart -}} - {{- .context.Values.mariadb.architecture -}} - {{- else -}} - {{- .context.Values.architecture -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for the key auth - -Usage: -{{ include "common.mariadb.values.key.auth" (dict "subchart" "true" "context" $) }} -Params: - - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false -*/}} -{{- define "common.mariadb.values.key.auth" -}} - {{- if .subchart -}} - mariadb.auth - {{- else -}} - auth - {{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_mongodb.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_mongodb.tpl deleted file mode 100644 index f820ec1..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_mongodb.tpl +++ /dev/null @@ -1,108 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Validate MongoDB® required passwords are not empty. - -Usage: -{{ include "common.validations.values.mongodb.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} -Params: - - secret - String - Required. Name of the secret where MongoDB® values are stored, e.g: "mongodb-passwords-secret" - - subchart - Boolean - Optional. Whether MongoDB® is used as subchart or not. Default: false -*/}} -{{- define "common.validations.values.mongodb.passwords" -}} - {{- $existingSecret := include "common.mongodb.values.auth.existingSecret" . -}} - {{- $enabled := include "common.mongodb.values.enabled" . -}} - {{- $authPrefix := include "common.mongodb.values.key.auth" . -}} - {{- $architecture := include "common.mongodb.values.architecture" . -}} - {{- $valueKeyRootPassword := printf "%s.rootPassword" $authPrefix -}} - {{- $valueKeyUsername := printf "%s.username" $authPrefix -}} - {{- $valueKeyDatabase := printf "%s.database" $authPrefix -}} - {{- $valueKeyPassword := printf "%s.password" $authPrefix -}} - {{- $valueKeyReplicaSetKey := printf "%s.replicaSetKey" $authPrefix -}} - {{- $valueKeyAuthEnabled := printf "%s.enabled" $authPrefix -}} - - {{- $authEnabled := include "common.utils.getValueFromKey" (dict "key" $valueKeyAuthEnabled "context" .context) -}} - - {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") (eq $authEnabled "true") -}} - {{- $requiredPasswords := list -}} - - {{- $requiredRootPassword := dict "valueKey" $valueKeyRootPassword "secret" .secret "field" "mongodb-root-password" -}} - {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}} - - {{- $valueUsername := include "common.utils.getValueFromKey" (dict "key" $valueKeyUsername "context" .context) }} - {{- $valueDatabase := include "common.utils.getValueFromKey" (dict "key" $valueKeyDatabase "context" .context) }} - {{- if and $valueUsername $valueDatabase -}} - {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "mongodb-password" -}} - {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}} - {{- end -}} - - {{- if (eq $architecture "replicaset") -}} - {{- $requiredReplicaSetKey := dict "valueKey" $valueKeyReplicaSetKey "secret" .secret "field" "mongodb-replica-set-key" -}} - {{- $requiredPasswords = append $requiredPasswords $requiredReplicaSetKey -}} - {{- end -}} - - {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} - - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for existingSecret. - -Usage: -{{ include "common.mongodb.values.auth.existingSecret" (dict "context" $) }} -Params: - - subchart - Boolean - Optional. Whether MongoDb is used as subchart or not. Default: false -*/}} -{{- define "common.mongodb.values.auth.existingSecret" -}} - {{- if .subchart -}} - {{- .context.Values.mongodb.auth.existingSecret | quote -}} - {{- else -}} - {{- .context.Values.auth.existingSecret | quote -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for enabled mongodb. - -Usage: -{{ include "common.mongodb.values.enabled" (dict "context" $) }} -*/}} -{{- define "common.mongodb.values.enabled" -}} - {{- if .subchart -}} - {{- printf "%v" .context.Values.mongodb.enabled -}} - {{- else -}} - {{- printf "%v" (not .context.Values.enabled) -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for the key auth - -Usage: -{{ include "common.mongodb.values.key.auth" (dict "subchart" "true" "context" $) }} -Params: - - subchart - Boolean - Optional. Whether MongoDB® is used as subchart or not. Default: false -*/}} -{{- define "common.mongodb.values.key.auth" -}} - {{- if .subchart -}} - mongodb.auth - {{- else -}} - auth - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for architecture - -Usage: -{{ include "common.mongodb.values.architecture" (dict "subchart" "true" "context" $) }} -Params: - - subchart - Boolean - Optional. Whether MongoDB® is used as subchart or not. Default: false -*/}} -{{- define "common.mongodb.values.architecture" -}} - {{- if .subchart -}} - {{- .context.Values.mongodb.architecture -}} - {{- else -}} - {{- .context.Values.architecture -}} - {{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_mysql.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_mysql.tpl deleted file mode 100644 index 74472a0..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_mysql.tpl +++ /dev/null @@ -1,103 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Validate MySQL required passwords are not empty. - -Usage: -{{ include "common.validations.values.mysql.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} -Params: - - secret - String - Required. Name of the secret where MySQL values are stored, e.g: "mysql-passwords-secret" - - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false -*/}} -{{- define "common.validations.values.mysql.passwords" -}} - {{- $existingSecret := include "common.mysql.values.auth.existingSecret" . -}} - {{- $enabled := include "common.mysql.values.enabled" . -}} - {{- $architecture := include "common.mysql.values.architecture" . -}} - {{- $authPrefix := include "common.mysql.values.key.auth" . -}} - {{- $valueKeyRootPassword := printf "%s.rootPassword" $authPrefix -}} - {{- $valueKeyUsername := printf "%s.username" $authPrefix -}} - {{- $valueKeyPassword := printf "%s.password" $authPrefix -}} - {{- $valueKeyReplicationPassword := printf "%s.replicationPassword" $authPrefix -}} - - {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} - {{- $requiredPasswords := list -}} - - {{- $requiredRootPassword := dict "valueKey" $valueKeyRootPassword "secret" .secret "field" "mysql-root-password" -}} - {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}} - - {{- $valueUsername := include "common.utils.getValueFromKey" (dict "key" $valueKeyUsername "context" .context) }} - {{- if not (empty $valueUsername) -}} - {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "mysql-password" -}} - {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}} - {{- end -}} - - {{- if (eq $architecture "replication") -}} - {{- $requiredReplicationPassword := dict "valueKey" $valueKeyReplicationPassword "secret" .secret "field" "mysql-replication-password" -}} - {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}} - {{- end -}} - - {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} - - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for existingSecret. - -Usage: -{{ include "common.mysql.values.auth.existingSecret" (dict "context" $) }} -Params: - - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false -*/}} -{{- define "common.mysql.values.auth.existingSecret" -}} - {{- if .subchart -}} - {{- .context.Values.mysql.auth.existingSecret | quote -}} - {{- else -}} - {{- .context.Values.auth.existingSecret | quote -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for enabled mysql. - -Usage: -{{ include "common.mysql.values.enabled" (dict "context" $) }} -*/}} -{{- define "common.mysql.values.enabled" -}} - {{- if .subchart -}} - {{- printf "%v" .context.Values.mysql.enabled -}} - {{- else -}} - {{- printf "%v" (not .context.Values.enabled) -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for architecture - -Usage: -{{ include "common.mysql.values.architecture" (dict "subchart" "true" "context" $) }} -Params: - - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false -*/}} -{{- define "common.mysql.values.architecture" -}} - {{- if .subchart -}} - {{- .context.Values.mysql.architecture -}} - {{- else -}} - {{- .context.Values.architecture -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for the key auth - -Usage: -{{ include "common.mysql.values.key.auth" (dict "subchart" "true" "context" $) }} -Params: - - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false -*/}} -{{- define "common.mysql.values.key.auth" -}} - {{- if .subchart -}} - mysql.auth - {{- else -}} - auth - {{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_postgresql.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_postgresql.tpl deleted file mode 100644 index 164ec0d..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_postgresql.tpl +++ /dev/null @@ -1,129 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Validate PostgreSQL required passwords are not empty. - -Usage: -{{ include "common.validations.values.postgresql.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} -Params: - - secret - String - Required. Name of the secret where postgresql values are stored, e.g: "postgresql-passwords-secret" - - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false -*/}} -{{- define "common.validations.values.postgresql.passwords" -}} - {{- $existingSecret := include "common.postgresql.values.existingSecret" . -}} - {{- $enabled := include "common.postgresql.values.enabled" . -}} - {{- $valueKeyPostgresqlPassword := include "common.postgresql.values.key.postgressPassword" . -}} - {{- $valueKeyPostgresqlReplicationEnabled := include "common.postgresql.values.key.replicationPassword" . -}} - {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} - {{- $requiredPasswords := list -}} - {{- $requiredPostgresqlPassword := dict "valueKey" $valueKeyPostgresqlPassword "secret" .secret "field" "postgresql-password" -}} - {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlPassword -}} - - {{- $enabledReplication := include "common.postgresql.values.enabled.replication" . -}} - {{- if (eq $enabledReplication "true") -}} - {{- $requiredPostgresqlReplicationPassword := dict "valueKey" $valueKeyPostgresqlReplicationEnabled "secret" .secret "field" "postgresql-replication-password" -}} - {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlReplicationPassword -}} - {{- end -}} - - {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to decide whether evaluate global values. - -Usage: -{{ include "common.postgresql.values.use.global" (dict "key" "key-of-global" "context" $) }} -Params: - - key - String - Required. Field to be evaluated within global, e.g: "existingSecret" -*/}} -{{- define "common.postgresql.values.use.global" -}} - {{- if .context.Values.global -}} - {{- if .context.Values.global.postgresql -}} - {{- index .context.Values.global.postgresql .key | quote -}} - {{- end -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for existingSecret. - -Usage: -{{ include "common.postgresql.values.existingSecret" (dict "context" $) }} -*/}} -{{- define "common.postgresql.values.existingSecret" -}} - {{- $globalValue := include "common.postgresql.values.use.global" (dict "key" "existingSecret" "context" .context) -}} - - {{- if .subchart -}} - {{- default (.context.Values.postgresql.existingSecret | quote) $globalValue -}} - {{- else -}} - {{- default (.context.Values.existingSecret | quote) $globalValue -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for enabled postgresql. - -Usage: -{{ include "common.postgresql.values.enabled" (dict "context" $) }} -*/}} -{{- define "common.postgresql.values.enabled" -}} - {{- if .subchart -}} - {{- printf "%v" .context.Values.postgresql.enabled -}} - {{- else -}} - {{- printf "%v" (not .context.Values.enabled) -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for the key postgressPassword. - -Usage: -{{ include "common.postgresql.values.key.postgressPassword" (dict "subchart" "true" "context" $) }} -Params: - - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false -*/}} -{{- define "common.postgresql.values.key.postgressPassword" -}} - {{- $globalValue := include "common.postgresql.values.use.global" (dict "key" "postgresqlUsername" "context" .context) -}} - - {{- if not $globalValue -}} - {{- if .subchart -}} - postgresql.postgresqlPassword - {{- else -}} - postgresqlPassword - {{- end -}} - {{- else -}} - global.postgresql.postgresqlPassword - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for enabled.replication. - -Usage: -{{ include "common.postgresql.values.enabled.replication" (dict "subchart" "true" "context" $) }} -Params: - - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false -*/}} -{{- define "common.postgresql.values.enabled.replication" -}} - {{- if .subchart -}} - {{- printf "%v" .context.Values.postgresql.replication.enabled -}} - {{- else -}} - {{- printf "%v" .context.Values.replication.enabled -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for the key replication.password. - -Usage: -{{ include "common.postgresql.values.key.replicationPassword" (dict "subchart" "true" "context" $) }} -Params: - - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false -*/}} -{{- define "common.postgresql.values.key.replicationPassword" -}} - {{- if .subchart -}} - postgresql.replication.password - {{- else -}} - replication.password - {{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_redis.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_redis.tpl deleted file mode 100644 index dcccfc1..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_redis.tpl +++ /dev/null @@ -1,76 +0,0 @@ - -{{/* vim: set filetype=mustache: */}} -{{/* -Validate Redis® required passwords are not empty. - -Usage: -{{ include "common.validations.values.redis.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} -Params: - - secret - String - Required. Name of the secret where redis values are stored, e.g: "redis-passwords-secret" - - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false -*/}} -{{- define "common.validations.values.redis.passwords" -}} - {{- $enabled := include "common.redis.values.enabled" . -}} - {{- $valueKeyPrefix := include "common.redis.values.keys.prefix" . -}} - {{- $standarizedVersion := include "common.redis.values.standarized.version" . }} - - {{- $existingSecret := ternary (printf "%s%s" $valueKeyPrefix "auth.existingSecret") (printf "%s%s" $valueKeyPrefix "existingSecret") (eq $standarizedVersion "true") }} - {{- $existingSecretValue := include "common.utils.getValueFromKey" (dict "key" $existingSecret "context" .context) }} - - {{- $valueKeyRedisPassword := ternary (printf "%s%s" $valueKeyPrefix "auth.password") (printf "%s%s" $valueKeyPrefix "password") (eq $standarizedVersion "true") }} - {{- $valueKeyRedisUseAuth := ternary (printf "%s%s" $valueKeyPrefix "auth.enabled") (printf "%s%s" $valueKeyPrefix "usePassword") (eq $standarizedVersion "true") }} - - {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} - {{- $requiredPasswords := list -}} - - {{- $useAuth := include "common.utils.getValueFromKey" (dict "key" $valueKeyRedisUseAuth "context" .context) -}} - {{- if eq $useAuth "true" -}} - {{- $requiredRedisPassword := dict "valueKey" $valueKeyRedisPassword "secret" .secret "field" "redis-password" -}} - {{- $requiredPasswords = append $requiredPasswords $requiredRedisPassword -}} - {{- end -}} - - {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right value for enabled redis. - -Usage: -{{ include "common.redis.values.enabled" (dict "context" $) }} -*/}} -{{- define "common.redis.values.enabled" -}} - {{- if .subchart -}} - {{- printf "%v" .context.Values.redis.enabled -}} - {{- else -}} - {{- printf "%v" (not .context.Values.enabled) -}} - {{- end -}} -{{- end -}} - -{{/* -Auxiliary function to get the right prefix path for the values - -Usage: -{{ include "common.redis.values.key.prefix" (dict "subchart" "true" "context" $) }} -Params: - - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false -*/}} -{{- define "common.redis.values.keys.prefix" -}} - {{- if .subchart -}}redis.{{- else -}}{{- end -}} -{{- end -}} - -{{/* -Checks whether the redis chart's includes the standarizations (version >= 14) - -Usage: -{{ include "common.redis.values.standarized.version" (dict "context" $) }} -*/}} -{{- define "common.redis.values.standarized.version" -}} - - {{- $standarizedAuth := printf "%s%s" (include "common.redis.values.keys.prefix" .) "auth" -}} - {{- $standarizedAuthValues := include "common.utils.getValueFromKey" (dict "key" $standarizedAuth "context" .context) }} - - {{- if $standarizedAuthValues -}} - {{- true -}} - {{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_validations.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_validations.tpl deleted file mode 100644 index 9a814cf..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/templates/validations/_validations.tpl +++ /dev/null @@ -1,46 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Validate values must not be empty. - -Usage: -{{- $validateValueConf00 := (dict "valueKey" "path.to.value" "secret" "secretName" "field" "password-00") -}} -{{- $validateValueConf01 := (dict "valueKey" "path.to.value" "secret" "secretName" "field" "password-01") -}} -{{ include "common.validations.values.empty" (dict "required" (list $validateValueConf00 $validateValueConf01) "context" $) }} - -Validate value params: - - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: "mysql.password" - - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: "mysql-passwords-secret" - - field - String - Optional. Name of the field in the secret data, e.g: "mysql-password" -*/}} -{{- define "common.validations.values.multiple.empty" -}} - {{- range .required -}} - {{- include "common.validations.values.single.empty" (dict "valueKey" .valueKey "secret" .secret "field" .field "context" $.context) -}} - {{- end -}} -{{- end -}} - -{{/* -Validate a value must not be empty. - -Usage: -{{ include "common.validations.value.empty" (dict "valueKey" "mariadb.password" "secret" "secretName" "field" "my-password" "subchart" "subchart" "context" $) }} - -Validate value params: - - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: "mysql.password" - - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: "mysql-passwords-secret" - - field - String - Optional. Name of the field in the secret data, e.g: "mysql-password" - - subchart - String - Optional - Name of the subchart that the validated password is part of. -*/}} -{{- define "common.validations.values.single.empty" -}} - {{- $value := include "common.utils.getValueFromKey" (dict "key" .valueKey "context" .context) }} - {{- $subchart := ternary "" (printf "%s." .subchart) (empty .subchart) }} - - {{- if not $value -}} - {{- $varname := "my-value" -}} - {{- $getCurrentValue := "" -}} - {{- if and .secret .field -}} - {{- $varname = include "common.utils.fieldToEnvVar" . -}} - {{- $getCurrentValue = printf " To get the current value:\n\n %s\n" (include "common.utils.secret.getvalue" .) -}} - {{- end -}} - {{- printf "\n '%s' must not be empty, please add '--set %s%s=$%s' to the command.%s" .valueKey $subchart .valueKey $varname $getCurrentValue -}} - {{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/values.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/values.yaml deleted file mode 100644 index f2df68e..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/charts/common/values.yaml +++ /dev/null @@ -1,5 +0,0 @@ -## bitnami/common -## It is required by CI/CD tools and processes. -## @skip exampleValue -## -exampleValue: common-chart diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/NOTES.txt b/manifests/helm/kong/2.46.0/charts/postgresql/templates/NOTES.txt deleted file mode 100644 index e0474d4..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/NOTES.txt +++ /dev/null @@ -1,89 +0,0 @@ -CHART NAME: {{ .Chart.Name }} -CHART VERSION: {{ .Chart.Version }} -APP VERSION: {{ .Chart.AppVersion }} - -** Please be patient while the chart is being deployed ** - -{{- if .Values.diagnosticMode.enabled }} -The chart has been deployed in diagnostic mode. All probes have been disabled and the command has been overwritten with: - - command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 4 }} - args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 4 }} - -Get the list of pods by executing: - - kubectl get pods --namespace {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }} - -Access the pod you want to debug by executing - - kubectl exec --namespace {{ .Release.Namespace }} -ti -- /opt/bitnami/scripts/postgresql/entrypoint.sh /bin/bash - -In order to replicate the container startup scripts execute this command: - - /opt/bitnami/scripts/postgresql/entrypoint.sh /opt/bitnami/scripts/postgresql/run.sh - -{{- else }} - -PostgreSQL can be accessed via port {{ include "postgresql.service.port" . }} on the following DNS names from within your cluster: - - {{ include "postgresql.primary.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local - Read/Write connection - -{{- if eq .Values.architecture "replication" }} - - {{ include "postgresql.readReplica.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local - Read only connection - -{{- end }} - -{{- $customUser := include "postgresql.username" . }} -{{- if and (not (empty $customUser)) (ne $customUser "postgres") .Values.auth.enablePostgresUser }} - -To get the password for "postgres" run: - - export POSTGRES_ADMIN_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ include "postgresql.secretName" . }} -o jsonpath="{.data.postgres-password}" | base64 -d) - -To get the password for "{{ $customUser }}" run: - - export POSTGRES_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ include "postgresql.secretName" . }} -o jsonpath="{.data.password}" | base64 -d) - -{{- else }} - -To get the password for "{{ default "postgres" $customUser }}" run: - - export POSTGRES_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ include "postgresql.secretName" . }} -o jsonpath="{.data.{{ ternary "password" "postgres-password" (and (not (empty $customUser)) (ne $customUser "postgres")) }}}" | base64 -d) - -{{- end }} - -To connect to your database run the following command: - - kubectl run {{ include "common.names.fullname" . }}-client --rm --tty -i --restart='Never' --namespace {{ .Release.Namespace }} --image {{ include "postgresql.image" . }} --env="PGPASSWORD=$POSTGRES_PASSWORD" \ - --command -- psql --host {{ include "postgresql.primary.fullname" . }} -U {{ default "postgres" $customUser }} -d {{- if include "postgresql.database" . }} {{ include "postgresql.database" . }}{{- else }} postgres{{- end }} -p {{ include "postgresql.service.port" . }} - - > NOTE: If you access the container using bash, make sure that you execute "/opt/bitnami/scripts/postgresql/entrypoint.sh /bin/bash" in order to avoid the error "psql: local user with ID {{ .Values.primary.containerSecurityContext.runAsUser }}} does not exist" - -To connect to your database from outside the cluster execute the following commands: - -{{- if contains "NodePort" .Values.primary.service.type }} - - export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "postgresql.primary.fullname" . }}) - PGPASSWORD="$POSTGRES_PASSWORD" psql --host $NODE_IP --port $NODE_PORT -U {{ default "postgres" $customUser }} -d {{- if include "postgresql.database" . }} {{ include "postgresql.database" . }}{{- else }} postgres{{- end }} - -{{- else if contains "LoadBalancer" .Values.primary.service.type }} - - NOTE: It may take a few minutes for the LoadBalancer IP to be available. - Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ include "postgresql.primary.fullname" . }}' - - export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "postgresql.primary.fullname" . }} --template "{{ "{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}" }}") - PGPASSWORD="$POSTGRES_PASSWORD" psql --host $SERVICE_IP --port {{ include "postgresql.service.port" . }} -U {{ default "postgres" $customUser }} -d {{- if include "postgresql.database" . }} {{ include "postgresql.database" . }}{{- else }} postgres{{- end }} - -{{- else if contains "ClusterIP" .Values.primary.service.type }} - - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ include "postgresql.primary.fullname" . }} {{ include "postgresql.service.port" . }}:{{ include "postgresql.service.port" . }} & - PGPASSWORD="$POSTGRES_PASSWORD" psql --host 127.0.0.1 -U {{ default "postgres" $customUser }} -d {{- if include "postgresql.database" . }} {{ include "postgresql.database" . }}{{- else }} postgres{{- end }} -p {{ include "postgresql.service.port" . }} - -{{- end }} -{{- end }} - -{{- include "postgresql.validateValues" . -}} -{{- include "common.warnings.rollingTag" .Values.image -}} -{{- include "common.warnings.rollingTag" .Values.volumePermissions.image }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/_helpers.tpl b/manifests/helm/kong/2.46.0/charts/postgresql/templates/_helpers.tpl deleted file mode 100644 index fe123f5..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/_helpers.tpl +++ /dev/null @@ -1,399 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Create a default fully qualified app name for PostgreSQL Primary objects -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "postgresql.primary.fullname" -}} -{{- if eq .Values.architecture "replication" }} - {{- printf "%s-%s" (include "common.names.fullname" .) .Values.primary.name | trunc 63 | trimSuffix "-" -}} -{{- else -}} - {{- include "common.names.fullname" . -}} -{{- end -}} -{{- end -}} - -{{/* -Create a default fully qualified app name for PostgreSQL read-only replicas objects -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "postgresql.readReplica.fullname" -}} -{{- printf "%s-%s" (include "common.names.fullname" .) .Values.readReplicas.name | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create the default FQDN for PostgreSQL primary headless service -We truncate at 63 chars because of the DNS naming spec. -*/}} -{{- define "postgresql.primary.svc.headless" -}} -{{- printf "%s-hl" (include "postgresql.primary.fullname" .) | trunc 63 | trimSuffix "-" }} -{{- end -}} - -{{/* -Create the default FQDN for PostgreSQL read-only replicas headless service -We truncate at 63 chars because of the DNS naming spec. -*/}} -{{- define "postgresql.readReplica.svc.headless" -}} -{{- printf "%s-hl" (include "postgresql.readReplica.fullname" .) | trunc 63 | trimSuffix "-" }} -{{- end -}} - -{{/* -Return the proper PostgreSQL image name -*/}} -{{- define "postgresql.image" -}} -{{ include "common.images.image" (dict "imageRoot" .Values.image "global" .Values.global) }} -{{- end -}} - -{{/* -Return the proper PostgreSQL metrics image name -*/}} -{{- define "postgresql.metrics.image" -}} -{{ include "common.images.image" (dict "imageRoot" .Values.metrics.image "global" .Values.global) }} -{{- end -}} - -{{/* -Return the proper image name (for the init container volume-permissions image) -*/}} -{{- define "postgresql.volumePermissions.image" -}} -{{ include "common.images.image" (dict "imageRoot" .Values.volumePermissions.image "global" .Values.global) }} -{{- end -}} - -{{/* -Return the proper Docker Image Registry Secret Names -*/}} -{{- define "postgresql.imagePullSecrets" -}} -{{ include "common.images.pullSecrets" (dict "images" (list .Values.image .Values.metrics.image .Values.volumePermissions.image) "global" .Values.global) }} -{{- end -}} - -{{/* -Return the name for a custom user to create -*/}} -{{- define "postgresql.username" -}} -{{- if .Values.global.postgresql.auth.username }} - {{- .Values.global.postgresql.auth.username -}} -{{- else -}} - {{- .Values.auth.username -}} -{{- end -}} -{{- end -}} - -{{/* -Return the name for a custom database to create -*/}} -{{- define "postgresql.database" -}} -{{- if .Values.global.postgresql.auth.database }} - {{- .Values.global.postgresql.auth.database -}} -{{- else if .Values.auth.database -}} - {{- .Values.auth.database -}} -{{- end -}} -{{- end -}} - -{{/* -Get the password secret. -*/}} -{{- define "postgresql.secretName" -}} -{{- if .Values.global.postgresql.auth.existingSecret }} - {{- printf "%s" (tpl .Values.global.postgresql.auth.existingSecret $) -}} -{{- else if .Values.auth.existingSecret -}} - {{- printf "%s" (tpl .Values.auth.existingSecret $) -}} -{{- else -}} - {{- printf "%s" (include "common.names.fullname" .) -}} -{{- end -}} -{{- end -}} - -{{/* -Get the replication-password key. -*/}} -{{- define "postgresql.replicationPasswordKey" -}} -{{- if or .Values.global.postgresql.auth.existingSecret .Values.auth.existingSecret }} - {{- if .Values.global.postgresql.auth.secretKeys.replicationPasswordKey }} - {{- printf "%s" (tpl .Values.global.postgresql.auth.secretKeys.replicationPasswordKey $) -}} - {{- else if .Values.auth.secretKeys.replicationPasswordKey -}} - {{- printf "%s" (tpl .Values.auth.secretKeys.replicationPasswordKey $) -}} - {{- else -}} - {{- "replication-password" -}} - {{- end -}} -{{- else -}} - {{- "replication-password" -}} -{{- end -}} -{{- end -}} - -{{/* -Get the admin-password key. -*/}} -{{- define "postgresql.adminPasswordKey" -}} -{{- if or .Values.global.postgresql.auth.existingSecret .Values.auth.existingSecret }} - {{- if .Values.global.postgresql.auth.secretKeys.adminPasswordKey }} - {{- printf "%s" (tpl .Values.global.postgresql.auth.secretKeys.adminPasswordKey $) -}} - {{- else if .Values.auth.secretKeys.adminPasswordKey -}} - {{- printf "%s" (tpl .Values.auth.secretKeys.adminPasswordKey $) -}} - {{- end -}} -{{- else -}} - {{- "postgres-password" -}} -{{- end -}} -{{- end -}} - -{{/* -Get the user-password key. -*/}} -{{- define "postgresql.userPasswordKey" -}} -{{- if or .Values.global.postgresql.auth.existingSecret .Values.auth.existingSecret }} - {{- if or (empty (include "postgresql.username" .)) (eq (include "postgresql.username" .) "postgres") }} - {{- printf "%s" (include "postgresql.adminPasswordKey" .) -}} - {{- else -}} - {{- if .Values.global.postgresql.auth.secretKeys.userPasswordKey }} - {{- printf "%s" (tpl .Values.global.postgresql.auth.secretKeys.userPasswordKey $) -}} - {{- else if .Values.auth.secretKeys.userPasswordKey -}} - {{- printf "%s" (tpl .Values.auth.secretKeys.userPasswordKey $) -}} - {{- end -}} - {{- end -}} -{{- else -}} - {{- ternary "password" "postgres-password" (and (not (empty (include "postgresql.username" .))) (ne (include "postgresql.username" .) "postgres")) -}} -{{- end -}} -{{- end -}} - -{{/* -Return true if a secret object should be created -*/}} -{{- define "postgresql.createSecret" -}} -{{- if not (or .Values.global.postgresql.auth.existingSecret .Values.auth.existingSecret) -}} - {{- true -}} -{{- end -}} -{{- end -}} - -{{/* -Return PostgreSQL service port -*/}} -{{- define "postgresql.service.port" -}} -{{- if .Values.global.postgresql.service.ports.postgresql }} - {{- .Values.global.postgresql.service.ports.postgresql -}} -{{- else -}} - {{- .Values.primary.service.ports.postgresql -}} -{{- end -}} -{{- end -}} - -{{/* -Return PostgreSQL service port -*/}} -{{- define "postgresql.readReplica.service.port" -}} -{{- if .Values.global.postgresql.service.ports.postgresql }} - {{- .Values.global.postgresql.service.ports.postgresql -}} -{{- else -}} - {{- .Values.readReplicas.service.ports.postgresql -}} -{{- end -}} -{{- end -}} - -{{/* -Get the PostgreSQL primary configuration ConfigMap name. -*/}} -{{- define "postgresql.primary.configmapName" -}} -{{- if .Values.primary.existingConfigmap -}} - {{- printf "%s" (tpl .Values.primary.existingConfigmap $) -}} -{{- else -}} - {{- printf "%s-configuration" (include "postgresql.primary.fullname" .) -}} -{{- end -}} -{{- end -}} - -{{/* -Return true if a configmap object should be created for PostgreSQL primary with the configuration -*/}} -{{- define "postgresql.primary.createConfigmap" -}} -{{- if and (or .Values.primary.configuration .Values.primary.pgHbaConfiguration) (not .Values.primary.existingConfigmap) }} - {{- true -}} -{{- else -}} -{{- end -}} -{{- end -}} - -{{/* -Get the PostgreSQL primary extended configuration ConfigMap name. -*/}} -{{- define "postgresql.primary.extendedConfigmapName" -}} -{{- if .Values.primary.existingExtendedConfigmap -}} - {{- printf "%s" (tpl .Values.primary.existingExtendedConfigmap $) -}} -{{- else -}} - {{- printf "%s-extended-configuration" (include "postgresql.primary.fullname" .) -}} -{{- end -}} -{{- end -}} - -{{/* -Get the PostgreSQL read replica extended configuration ConfigMap name. -*/}} -{{- define "postgresql.readReplicas.extendedConfigmapName" -}} - {{- printf "%s-extended-configuration" (include "postgresql.readReplica.fullname" .) -}} -{{- end -}} - -{{/* -Return true if a configmap object should be created for PostgreSQL primary with the extended configuration -*/}} -{{- define "postgresql.primary.createExtendedConfigmap" -}} -{{- if and .Values.primary.extendedConfiguration (not .Values.primary.existingExtendedConfigmap) }} - {{- true -}} -{{- else -}} -{{- end -}} -{{- end -}} - -{{/* -Return true if a configmap object should be created for PostgreSQL read replica with the extended configuration -*/}} -{{- define "postgresql.readReplicas.createExtendedConfigmap" -}} -{{- if .Values.readReplicas.extendedConfiguration }} - {{- true -}} -{{- else -}} -{{- end -}} -{{- end -}} - -{{/* - Create the name of the service account to use - */}} -{{- define "postgresql.serviceAccountName" -}} -{{- if .Values.serviceAccount.create -}} - {{ default (include "common.names.fullname" .) .Values.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{/* -Return true if a configmap should be mounted with PostgreSQL configuration -*/}} -{{- define "postgresql.mountConfigurationCM" -}} -{{- if or .Values.primary.configuration .Values.primary.pgHbaConfiguration .Values.primary.existingConfigmap }} - {{- true -}} -{{- end -}} -{{- end -}} - -{{/* -Get the initialization scripts ConfigMap name. -*/}} -{{- define "postgresql.initdb.scriptsCM" -}} -{{- if .Values.primary.initdb.scriptsConfigMap -}} - {{- printf "%s" (tpl .Values.primary.initdb.scriptsConfigMap $) -}} -{{- else -}} - {{- printf "%s-init-scripts" (include "postgresql.primary.fullname" .) -}} -{{- end -}} -{{- end -}} - -{/* -Return true if TLS is enabled for LDAP connection -*/}} -{{- define "postgresql.ldap.tls.enabled" -}} -{{- if and (kindIs "string" .Values.ldap.tls) (not (empty .Values.ldap.tls)) }} - {{- true -}} -{{- else if and (kindIs "map" .Values.ldap.tls) .Values.ldap.tls.enabled }} - {{- true -}} -{{- end -}} -{{- end -}} - -{{/* -Get the readiness probe command -*/}} -{{- define "postgresql.readinessProbeCommand" -}} -{{- $customUser := include "postgresql.username" . }} -- | -{{- if (include "postgresql.database" .) }} - exec pg_isready -U {{ default "postgres" $customUser | quote }} -d "dbname={{ include "postgresql.database" . }} {{- if .Values.tls.enabled }} sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}{{- end }}" -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }} -{{- else }} - exec pg_isready -U {{ default "postgres" $customUser | quote }} {{- if .Values.tls.enabled }} -d "sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}"{{- end }} -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }} -{{- end }} -{{- if contains "bitnami/" .Values.image.repository }} - [ -f /opt/bitnami/postgresql/tmp/.initialized ] || [ -f /bitnami/postgresql/.initialized ] -{{- end -}} -{{- end -}} - -{{/* -Compile all warnings into a single message, and call fail. -*/}} -{{- define "postgresql.validateValues" -}} -{{- $messages := list -}} -{{- $messages := append $messages (include "postgresql.validateValues.ldapConfigurationMethod" .) -}} -{{- $messages := append $messages (include "postgresql.validateValues.psp" .) -}} -{{- $messages := without $messages "" -}} -{{- $message := join "\n" $messages -}} - -{{- if $message -}} -{{- printf "\nVALUES VALIDATION:\n%s" $message | fail -}} -{{- end -}} -{{- end -}} - -{{/* -Validate values of Postgresql - If ldap.url is used then you don't need the other settings for ldap -*/}} -{{- define "postgresql.validateValues.ldapConfigurationMethod" -}} -{{- if and .Values.ldap.enabled (and (not (empty .Values.ldap.url)) (not (empty .Values.ldap.server))) }} -postgresql: ldap.url, ldap.server - You cannot set both `ldap.url` and `ldap.server` at the same time. - Please provide a unique way to configure LDAP. - More info at https://www.postgresql.org/docs/current/auth-ldap.html -{{- end -}} -{{- end -}} - -{{/* -Validate values of Postgresql - If PSP is enabled RBAC should be enabled too -*/}} -{{- define "postgresql.validateValues.psp" -}} -{{- if and .Values.psp.create (not .Values.rbac.create) }} -postgresql: psp.create, rbac.create - RBAC should be enabled if PSP is enabled in order for PSP to work. - More info at https://kubernetes.io/docs/concepts/policy/pod-security-policy/#authorizing-policies -{{- end -}} -{{- end -}} - -{{/* -Return the path to the cert file. -*/}} -{{- define "postgresql.tlsCert" -}} -{{- if .Values.tls.autoGenerated }} - {{- printf "/opt/bitnami/postgresql/certs/tls.crt" -}} -{{- else -}} - {{- required "Certificate filename is required when TLS in enabled" .Values.tls.certFilename | printf "/opt/bitnami/postgresql/certs/%s" -}} -{{- end -}} -{{- end -}} - -{{/* -Return the path to the cert key file. -*/}} -{{- define "postgresql.tlsCertKey" -}} -{{- if .Values.tls.autoGenerated }} - {{- printf "/opt/bitnami/postgresql/certs/tls.key" -}} -{{- else -}} -{{- required "Certificate Key filename is required when TLS in enabled" .Values.tls.certKeyFilename | printf "/opt/bitnami/postgresql/certs/%s" -}} -{{- end -}} -{{- end -}} - -{{/* -Return the path to the CA cert file. -*/}} -{{- define "postgresql.tlsCACert" -}} -{{- if .Values.tls.autoGenerated }} - {{- printf "/opt/bitnami/postgresql/certs/ca.crt" -}} -{{- else -}} - {{- printf "/opt/bitnami/postgresql/certs/%s" .Values.tls.certCAFilename -}} -{{- end -}} -{{- end -}} - -{{/* -Return the path to the CRL file. -*/}} -{{- define "postgresql.tlsCRL" -}} -{{- if .Values.tls.crlFilename -}} -{{- printf "/opt/bitnami/postgresql/certs/%s" .Values.tls.crlFilename -}} -{{- end -}} -{{- end -}} - -{{/* -Return true if a TLS credentials secret object should be created -*/}} -{{- define "postgresql.createTlsSecret" -}} -{{- if and .Values.tls.autoGenerated (not .Values.tls.certificatesSecret) }} - {{- true -}} -{{- end -}} -{{- end -}} - -{{/* -Return the path to the CA cert file. -*/}} -{{- define "postgresql.tlsSecretName" -}} -{{- if .Values.tls.autoGenerated }} - {{- printf "%s-crt" (include "common.names.fullname" .) -}} -{{- else -}} - {{ required "A secret containing TLS certificates is required when TLS is enabled" .Values.tls.certificatesSecret }} -{{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/extra-list.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/extra-list.yaml deleted file mode 100644 index 9ac65f9..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/extra-list.yaml +++ /dev/null @@ -1,4 +0,0 @@ -{{- range .Values.extraDeploy }} ---- -{{ include "common.tplvalues.render" (dict "value" . "context" $) }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/networkpolicy-egress.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/networkpolicy-egress.yaml deleted file mode 100644 index e862147..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/networkpolicy-egress.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if and .Values.networkPolicy.enabled (or .Values.networkPolicy.egressRules.denyConnectionsToExternal .Values.networkPolicy.egressRules.customRules) }} -apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} -kind: NetworkPolicy -metadata: - name: {{ printf "%s-egress" (include "common.names.fullname" .) }} - namespace: {{ .Release.Namespace }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - podSelector: - matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} - policyTypes: - - Egress - egress: - {{- if .Values.networkPolicy.egressRules.denyConnectionsToExternal }} - - ports: - - port: 53 - protocol: UDP - - port: 53 - protocol: TCP - - to: - - namespaceSelector: {} - {{- end }} - {{- if .Values.networkPolicy.egressRules.customRules }} - {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.egressRules.customRules "context" $) | nindent 4 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/configmap.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/configmap.yaml deleted file mode 100644 index d654a22..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/configmap.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if (include "postgresql.primary.createConfigmap" .) }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ printf "%s-configuration" (include "postgresql.primary.fullname" .) }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: primary - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -data: - {{- if .Values.primary.configuration }} - postgresql.conf: |- - {{- include "common.tplvalues.render" ( dict "value" .Values.primary.configuration "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.primary.pgHbaConfiguration }} - pg_hba.conf: | - {{- include "common.tplvalues.render" ( dict "value" .Values.primary.pgHbaConfiguration "context" $ ) | nindent 4 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/extended-configmap.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/extended-configmap.yaml deleted file mode 100644 index d129bd3..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/extended-configmap.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if (include "postgresql.primary.createExtendedConfigmap" .) }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ printf "%s-extended-configuration" (include "postgresql.primary.fullname" .) }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: primary - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -data: - override.conf: |- - {{- include "common.tplvalues.render" ( dict "value" .Values.primary.extendedConfiguration "context" $ ) | nindent 4 }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/initialization-configmap.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/initialization-configmap.yaml deleted file mode 100644 index d3d26cb..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/initialization-configmap.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if and .Values.primary.initdb.scripts (not .Values.primary.initdb.scriptsConfigMap) }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ printf "%s-init-scripts" (include "postgresql.primary.fullname" .) }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -data: {{- include "common.tplvalues.render" (dict "value" .Values.primary.initdb.scripts "context" .) | nindent 2 }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/metrics-configmap.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/metrics-configmap.yaml deleted file mode 100644 index 8ad2f35..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/metrics-configmap.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if and .Values.metrics.enabled .Values.metrics.customMetrics }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ printf "%s-metrics" (include "postgresql.primary.fullname" .) }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -data: - custom-metrics.yaml: {{ toYaml .Values.metrics.customMetrics | quote }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/metrics-svc.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/metrics-svc.yaml deleted file mode 100644 index 75a1b81..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/metrics-svc.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- if .Values.metrics.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ printf "%s-metrics" (include "postgresql.primary.fullname" .) }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: metrics - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - annotations: - {{- if .Values.commonAnnotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.metrics.service.annotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.service.annotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - type: ClusterIP - sessionAffinity: {{ .Values.metrics.service.sessionAffinity }} - {{- if .Values.metrics.service.clusterIP }} - clusterIP: {{ .Values.metrics.service.clusterIP }} - {{- end }} - ports: - - name: http-metrics - port: {{ .Values.metrics.service.ports.metrics }} - targetPort: http-metrics - selector: {{- include "common.labels.matchLabels" . | nindent 4 }} - app.kubernetes.io/component: primary -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/networkpolicy.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/networkpolicy.yaml deleted file mode 100644 index ce0052d..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/networkpolicy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- if and .Values.networkPolicy.enabled (or .Values.networkPolicy.metrics.enabled .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled) }} -apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} -kind: NetworkPolicy -metadata: - name: {{ printf "%s-ingress" (include "postgresql.primary.fullname" .) }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: primary - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - podSelector: - matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} - app.kubernetes.io/component: primary - ingress: - {{- if and .Values.metrics.enabled .Values.networkPolicy.metrics.enabled (or .Values.networkPolicy.metrics.namespaceSelector .Values.networkPolicy.metrics.podSelector) }} - - from: - {{- if .Values.networkPolicy.metrics.namespaceSelector }} - - namespaceSelector: - matchLabels: {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.metrics.namespaceSelector "context" $) | nindent 14 }} - {{- end }} - {{- if .Values.networkPolicy.metrics.podSelector }} - - podSelector: - matchLabels: {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.metrics.podSelector "context" $) | nindent 14 }} - {{- end }} - ports: - - port: {{ .Values.metrics.containerPorts.metrics }} - {{- end }} - {{- if and .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled (or .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.namespaceSelector .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.podSelector) }} - - from: - {{- if .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.namespaceSelector }} - - namespaceSelector: - matchLabels: {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.namespaceSelector "context" $) | nindent 14 }} - {{- end }} - {{- if .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.podSelector }} - - podSelector: - matchLabels: {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.podSelector "context" $) | nindent 14 }} - {{- end }} - ports: - - port: {{ .Values.containerPorts.postgresql }} - {{- end }} - {{- if and .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled (eq .Values.architecture "replication") }} - - from: - - podSelector: - matchLabels: {{- include "common.labels.matchLabels" . | nindent 14 }} - app.kubernetes.io/component: read - ports: - - port: {{ .Values.containerPorts.postgresql }} - {{- end }} - {{- if .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.customRules }} - {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.customRules "context" $) | nindent 4 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/servicemonitor.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/servicemonitor.yaml deleted file mode 100644 index c4a19fe..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/servicemonitor.yaml +++ /dev/null @@ -1,48 +0,0 @@ -{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ include "postgresql.primary.fullname" . }} - namespace: {{ default .Release.Namespace .Values.metrics.serviceMonitor.namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: metrics - {{- if .Values.metrics.serviceMonitor.labels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.serviceMonitor.labels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - {{- if .Values.metrics.serviceMonitor.jobLabel }} - jobLabel: {{ .Values.metrics.serviceMonitor.jobLabel }} - {{- end }} - selector: - matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} - {{- if .Values.metrics.serviceMonitor.selector }} - {{- include "common.tplvalues.render" (dict "value" .Values.metrics.serviceMonitor.selector "context" $) | nindent 6 }} - {{- end }} - app.kubernetes.io/component: metrics - endpoints: - - port: http-metrics - {{- if .Values.metrics.serviceMonitor.interval }} - interval: {{ .Values.metrics.serviceMonitor.interval }} - {{- end }} - {{- if .Values.metrics.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }} - {{- end }} - {{- if .Values.metrics.serviceMonitor.relabelings }} - relabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.serviceMonitor.relabelings "context" $) | nindent 6 }} - {{- end }} - {{- if .Values.metrics.serviceMonitor.metricRelabelings }} - metricRelabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.serviceMonitor.metricRelabelings "context" $) | nindent 6 }} - {{- end }} - {{- if .Values.metrics.serviceMonitor.honorLabels }} - honorLabels: {{ .Values.metrics.serviceMonitor.honorLabels }} - {{- end }} - namespaceSelector: - matchNames: - - {{ .Release.Namespace | quote }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/statefulset.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/statefulset.yaml deleted file mode 100644 index 3fd77f4..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/statefulset.yaml +++ /dev/null @@ -1,634 +0,0 @@ -{{- $customUser := include "postgresql.username" . }} -apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }} -kind: StatefulSet -metadata: - name: {{ include "postgresql.primary.fullname" . }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: primary - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.primary.labels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.primary.labels "context" $ ) | nindent 4 }} - {{- end }} - annotations: - {{- if .Values.commonAnnotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.primary.annotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.primary.annotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - replicas: 1 - serviceName: {{ include "postgresql.primary.svc.headless" . }} - {{- if .Values.primary.updateStrategy }} - updateStrategy: {{- toYaml .Values.primary.updateStrategy | nindent 4 }} - {{- end }} - selector: - matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} - app.kubernetes.io/component: primary - template: - metadata: - name: {{ include "postgresql.primary.fullname" . }} - labels: {{- include "common.labels.standard" . | nindent 8 }} - app.kubernetes.io/component: primary - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 8 }} - {{- end }} - {{- if .Values.primary.podLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.primary.podLabels "context" $ ) | nindent 8 }} - {{- end }} - annotations: - {{- if (include "postgresql.primary.createConfigmap" .) }} - checksum/configuration: {{ include (print $.Template.BasePath "/primary/configmap.yaml") . | sha256sum }} - {{- end }} - {{- if (include "postgresql.primary.createExtendedConfigmap" .) }} - checksum/extended-configuration: {{ include (print $.Template.BasePath "/primary/extended-configmap.yaml") . | sha256sum }} - {{- end }} - {{- if .Values.primary.podAnnotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.primary.podAnnotations "context" $ ) | nindent 8 }} - {{- end }} - spec: - {{- if .Values.primary.extraPodSpec }} - {{- include "common.tplvalues.render" (dict "value" .Values.primary.extraPodSpec "context" $) | nindent 6 }} - {{- end }} - serviceAccountName: {{ include "postgresql.serviceAccountName" . }} - {{- include "postgresql.imagePullSecrets" . | nindent 6 }} - {{- if .Values.primary.hostAliases }} - hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.primary.hostAliases "context" $) | nindent 8 }} - {{- end }} - {{- if .Values.primary.affinity }} - affinity: {{- include "common.tplvalues.render" (dict "value" .Values.primary.affinity "context" $) | nindent 8 }} - {{- else }} - affinity: - podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.primary.podAffinityPreset "component" "primary" "context" $) | nindent 10 }} - podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.primary.podAntiAffinityPreset "component" "primary" "context" $) | nindent 10 }} - nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.primary.nodeAffinityPreset.type "key" .Values.primary.nodeAffinityPreset.key "values" .Values.primary.nodeAffinityPreset.values) | nindent 10 }} - {{- end }} - {{- if .Values.primary.nodeSelector }} - nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.primary.nodeSelector "context" $) | nindent 8 }} - {{- end }} - {{- if .Values.primary.tolerations }} - tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.primary.tolerations "context" $) | nindent 8 }} - {{- end }} - {{- if .Values.primary.topologySpreadConstraints }} - topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.primary.topologySpreadConstraints "context" .) | nindent 8 }} - {{- end }} - {{- if .Values.primary.priorityClassName }} - priorityClassName: {{ .Values.primary.priorityClassName }} - {{- end }} - {{- if .Values.primary.schedulerName }} - schedulerName: {{ .Values.primary.schedulerName | quote }} - {{- end }} - {{- if .Values.primary.terminationGracePeriodSeconds }} - terminationGracePeriodSeconds: {{ .Values.primary.terminationGracePeriodSeconds }} - {{- end }} - {{- if .Values.primary.podSecurityContext.enabled }} - securityContext: {{- omit .Values.primary.podSecurityContext "enabled" | toYaml | nindent 8 }} - {{- end }} - hostNetwork: {{ .Values.primary.hostNetwork }} - hostIPC: {{ .Values.primary.hostIPC }} - initContainers: - {{- if and .Values.tls.enabled (not .Values.volumePermissions.enabled) }} - - name: copy-certs - image: {{ include "postgresql.volumePermissions.image" . }} - imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }} - {{- if .Values.primary.resources }} - resources: {{- toYaml .Values.primary.resources | nindent 12 }} - {{- end }} - # We don't require a privileged container in this case - {{- if .Values.primary.containerSecurityContext.enabled }} - securityContext: {{- omit .Values.primary.containerSecurityContext "enabled" | toYaml | nindent 12 }} - {{- end }} - command: - - /bin/sh - - -ec - - | - cp /tmp/certs/* /opt/bitnami/postgresql/certs/ - chmod 600 {{ include "postgresql.tlsCertKey" . }} - volumeMounts: - - name: raw-certificates - mountPath: /tmp/certs - - name: postgresql-certificates - mountPath: /opt/bitnami/postgresql/certs - {{- else if and .Values.volumePermissions.enabled (or .Values.primary.persistence.enabled .Values.shmVolume.enabled) }} - - name: init-chmod-data - image: {{ include "postgresql.volumePermissions.image" . }} - imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }} - {{- if .Values.volumePermissions.resources }} - resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }} - {{- end }} - command: - - /bin/sh - - -ec - - | - {{- if .Values.primary.persistence.enabled }} - {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) "auto" }} - chown `id -u`:`id -G | cut -d " " -f2` {{ .Values.primary.persistence.mountPath }} - {{- else }} - chown {{ .Values.primary.containerSecurityContext.runAsUser }}:{{ .Values.primary.podSecurityContext.fsGroup }} {{ .Values.primary.persistence.mountPath }} - {{- end }} - mkdir -p {{ .Values.primary.persistence.mountPath }}/data {{- if (include "postgresql.mountConfigurationCM" .) }} {{ .Values.primary.persistence.mountPath }}/conf {{- end }} - chmod 700 {{ .Values.primary.persistence.mountPath }}/data {{- if (include "postgresql.mountConfigurationCM" .) }} {{ .Values.primary.persistence.mountPath }}/conf {{- end }} - find {{ .Values.primary.persistence.mountPath }} -mindepth 1 -maxdepth 1 {{- if not (include "postgresql.mountConfigurationCM" .) }} -not -name "conf" {{- end }} -not -name ".snapshot" -not -name "lost+found" | \ - {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) "auto" }} - xargs -r chown -R `id -u`:`id -G | cut -d " " -f2` - {{- else }} - xargs -r chown -R {{ .Values.primary.containerSecurityContext.runAsUser }}:{{ .Values.primary.podSecurityContext.fsGroup }} - {{- end }} - {{- end }} - {{- if .Values.shmVolume.enabled }} - chmod -R 777 /dev/shm - {{- end }} - {{- if .Values.tls.enabled }} - cp /tmp/certs/* /opt/bitnami/postgresql/certs/ - {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) "auto" }} - chown -R `id -u`:`id -G | cut -d " " -f2` /opt/bitnami/postgresql/certs/ - {{- else }} - chown -R {{ .Values.primary.containerSecurityContext.runAsUser }}:{{ .Values.primary.podSecurityContext.fsGroup }} /opt/bitnami/postgresql/certs/ - {{- end }} - chmod 600 {{ include "postgresql.tlsCertKey" . }} - {{- end }} - {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) "auto" }} - securityContext: {{- omit .Values.volumePermissions.containerSecurityContext "runAsUser" | toYaml | nindent 12 }} - {{- else }} - securityContext: {{- .Values.volumePermissions.containerSecurityContext | toYaml | nindent 12 }} - {{- end }} - volumeMounts: - {{- if .Values.primary.persistence.enabled }} - - name: data - mountPath: {{ .Values.primary.persistence.mountPath }} - {{- if .Values.primary.persistence.subPath }} - subPath: {{ .Values.primary.persistence.subPath }} - {{- end }} - {{- end }} - {{- if .Values.shmVolume.enabled }} - - name: dshm - mountPath: /dev/shm - {{- end }} - {{- if .Values.tls.enabled }} - - name: raw-certificates - mountPath: /tmp/certs - - name: postgresql-certificates - mountPath: /opt/bitnami/postgresql/certs - {{- end }} - {{- end }} - {{- if .Values.primary.initContainers }} - {{- include "common.tplvalues.render" ( dict "value" .Values.primary.initContainers "context" $ ) | nindent 8 }} - {{- end }} - containers: - - name: postgresql - image: {{ include "postgresql.image" . }} - imagePullPolicy: {{ .Values.image.pullPolicy | quote }} - {{- if .Values.primary.containerSecurityContext.enabled }} - securityContext: {{- omit .Values.primary.containerSecurityContext "enabled" | toYaml | nindent 12 }} - {{- end }} - {{- if .Values.diagnosticMode.enabled }} - command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} - {{- else if .Values.primary.command }} - command: {{- include "common.tplvalues.render" (dict "value" .Values.primary.command "context" $) | nindent 12 }} - {{- end }} - {{- if .Values.diagnosticMode.enabled }} - args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} - {{- else if .Values.primary.args }} - args: {{- include "common.tplvalues.render" (dict "value" .Values.primary.args "context" $) | nindent 12 }} - {{- end }} - env: - - name: BITNAMI_DEBUG - value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }} - - name: POSTGRESQL_PORT_NUMBER - value: {{ .Values.containerPorts.postgresql | quote }} - - name: POSTGRESQL_VOLUME_DIR - value: {{ .Values.primary.persistence.mountPath | quote }} - {{- if .Values.primary.persistence.mountPath }} - - name: PGDATA - value: {{ .Values.postgresqlDataDir | quote }} - {{- end }} - # Authentication - {{- if and (not (empty $customUser)) (ne $customUser "postgres") }} - - name: POSTGRES_USER - value: {{ $customUser | quote }} - {{- if .Values.auth.enablePostgresUser }} - {{- if .Values.auth.usePasswordFiles }} - - name: POSTGRES_POSTGRES_PASSWORD_FILE - value: "/opt/bitnami/postgresql/secrets/postgres-password" - {{- else }} - - name: POSTGRES_POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: {{ include "postgresql.secretName" . }} - key: {{ include "postgresql.adminPasswordKey" . }} - {{- end }} - {{- end }} - {{- end }} - {{- if .Values.auth.usePasswordFiles }} - - name: POSTGRES_PASSWORD_FILE - value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (ternary "password" "postgres-password" (and (not (empty $customUser)) (ne $customUser "postgres"))) }} - {{- else }} - - name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: {{ include "postgresql.secretName" . }} - key: {{ include "postgresql.userPasswordKey" . }} - {{- end }} - {{- if (include "postgresql.database" .) }} - - name: POSTGRES_DB - value: {{ (include "postgresql.database" .) | quote }} - {{- end }} - # Replication - {{- if or (eq .Values.architecture "replication") .Values.primary.standby.enabled }} - - name: POSTGRES_REPLICATION_MODE - value: {{ ternary "slave" "master" .Values.primary.standby.enabled | quote }} - - name: POSTGRES_REPLICATION_USER - value: {{ .Values.auth.replicationUsername | quote }} - {{- if .Values.auth.usePasswordFiles }} - - name: POSTGRES_REPLICATION_PASSWORD_FILE - value: "/opt/bitnami/postgresql/secrets/replication-password" - {{- else }} - - name: POSTGRES_REPLICATION_PASSWORD - valueFrom: - secretKeyRef: - name: {{ include "postgresql.secretName" . }} - key: {{ include "postgresql.replicationPasswordKey" . }} - {{- end }} - {{- if not (eq .Values.replication.synchronousCommit "off") }} - - name: POSTGRES_SYNCHRONOUS_COMMIT_MODE - value: {{ .Values.replication.synchronousCommit | quote }} - - name: POSTGRES_NUM_SYNCHRONOUS_REPLICAS - value: {{ .Values.replication.numSynchronousReplicas | quote }} - {{- end }} - - name: POSTGRES_CLUSTER_APP_NAME - value: {{ .Values.replication.applicationName }} - {{- end }} - # Initdb - {{- if .Values.primary.initdb.args }} - - name: POSTGRES_INITDB_ARGS - value: {{ .Values.primary.initdb.args | quote }} - {{- end }} - {{- if .Values.primary.initdb.postgresqlWalDir }} - - name: POSTGRES_INITDB_WALDIR - value: {{ .Values.primary.initdb.postgresqlWalDir | quote }} - {{- end }} - {{- if .Values.primary.initdb.user }} - - name: POSTGRESQL_INITSCRIPTS_USERNAME - value: {{ .Values.primary.initdb.user }} - {{- end }} - {{- if .Values.primary.initdb.password }} - - name: POSTGRESQL_INITSCRIPTS_PASSWORD - value: {{ .Values.primary.initdb.password | quote }} - {{- end }} - # Standby - {{- if .Values.primary.standby.enabled }} - - name: POSTGRES_MASTER_HOST - value: {{ .Values.primary.standby.primaryHost }} - - name: POSTGRES_MASTER_PORT_NUMBER - value: {{ .Values.primary.standby.primaryPort | quote }} - {{- end }} - # LDAP - - name: POSTGRESQL_ENABLE_LDAP - value: {{ ternary "yes" "no" .Values.ldap.enabled | quote }} - {{- if .Values.ldap.enabled }} - {{- if or .Values.ldap.url .Values.ldap.uri }} - - name: POSTGRESQL_LDAP_URL - value: {{ coalesce .Values.ldap.url .Values.ldap.uri }} - {{- else }} - - name: POSTGRESQL_LDAP_SERVER - value: {{ .Values.ldap.server }} - - name: POSTGRESQL_LDAP_PORT - value: {{ .Values.ldap.port | quote }} - - name: POSTGRESQL_LDAP_SCHEME - value: {{ .Values.ldap.scheme }} - {{- if (include "postgresql.ldap.tls.enabled" .) }} - - name: POSTGRESQL_LDAP_TLS - value: "1" - {{- end }} - - name: POSTGRESQL_LDAP_PREFIX - value: {{ .Values.ldap.prefix | quote }} - - name: POSTGRESQL_LDAP_SUFFIX - value: {{ .Values.ldap.suffix | quote }} - - name: POSTGRESQL_LDAP_BASE_DN - value: {{ coalesce .Values.ldap.baseDN .Values.ldap.basedn }} - - name: POSTGRESQL_LDAP_BIND_DN - value: {{ coalesce .Values.ldap.bindDN .Values.ldap.binddn}} - {{- if or (not (empty .Values.ldap.bind_password)) (not (empty .Values.ldap.bindpw)) }} - - name: POSTGRESQL_LDAP_BIND_PASSWORD - valueFrom: - secretKeyRef: - name: {{ include "postgresql.secretName" . }} - key: ldap-password - {{- end }} - - name: POSTGRESQL_LDAP_SEARCH_ATTR - value: {{ coalesce .Values.ldap.search_attr .Values.ldap.searchAttribute }} - - name: POSTGRESQL_LDAP_SEARCH_FILTER - value: {{ coalesce .Values.ldap.search_filter .Values.ldap.searchFilter }} - {{- end }} - {{- end }} - # TLS - - name: POSTGRESQL_ENABLE_TLS - value: {{ ternary "yes" "no" .Values.tls.enabled | quote }} - {{- if .Values.tls.enabled }} - - name: POSTGRESQL_TLS_PREFER_SERVER_CIPHERS - value: {{ ternary "yes" "no" .Values.tls.preferServerCiphers | quote }} - - name: POSTGRESQL_TLS_CERT_FILE - value: {{ include "postgresql.tlsCert" . }} - - name: POSTGRESQL_TLS_KEY_FILE - value: {{ include "postgresql.tlsCertKey" . }} - {{- if .Values.tls.certCAFilename }} - - name: POSTGRESQL_TLS_CA_FILE - value: {{ include "postgresql.tlsCACert" . }} - {{- end }} - {{- if .Values.tls.crlFilename }} - - name: POSTGRESQL_TLS_CRL_FILE - value: {{ include "postgresql.tlsCRL" . }} - {{- end }} - {{- end }} - # Audit - - name: POSTGRESQL_LOG_HOSTNAME - value: {{ .Values.audit.logHostname | quote }} - - name: POSTGRESQL_LOG_CONNECTIONS - value: {{ .Values.audit.logConnections | quote }} - - name: POSTGRESQL_LOG_DISCONNECTIONS - value: {{ .Values.audit.logDisconnections | quote }} - {{- if .Values.audit.logLinePrefix }} - - name: POSTGRESQL_LOG_LINE_PREFIX - value: {{ .Values.audit.logLinePrefix | quote }} - {{- end }} - {{- if .Values.audit.logTimezone }} - - name: POSTGRESQL_LOG_TIMEZONE - value: {{ .Values.audit.logTimezone | quote }} - {{- end }} - {{- if .Values.audit.pgAuditLog }} - - name: POSTGRESQL_PGAUDIT_LOG - value: {{ .Values.audit.pgAuditLog | quote }} - {{- end }} - - name: POSTGRESQL_PGAUDIT_LOG_CATALOG - value: {{ .Values.audit.pgAuditLogCatalog | quote }} - # Others - - name: POSTGRESQL_CLIENT_MIN_MESSAGES - value: {{ .Values.audit.clientMinMessages | quote }} - - name: POSTGRESQL_SHARED_PRELOAD_LIBRARIES - value: {{ .Values.postgresqlSharedPreloadLibraries | quote }} - {{- if .Values.primary.extraEnvVars }} - {{- include "common.tplvalues.render" (dict "value" .Values.primary.extraEnvVars "context" $) | nindent 12 }} - {{- end }} - {{- if or .Values.primary.extraEnvVarsCM .Values.primary.extraEnvVarsSecret }} - envFrom: - {{- if .Values.primary.extraEnvVarsCM }} - - configMapRef: - name: {{ .Values.primary.extraEnvVarsCM }} - {{- end }} - {{- if .Values.primary.extraEnvVarsSecret }} - - secretRef: - name: {{ .Values.primary.extraEnvVarsSecret }} - {{- end }} - {{- end }} - ports: - - name: tcp-postgresql - containerPort: {{ .Values.containerPorts.postgresql }} - {{- if not .Values.diagnosticMode.enabled }} - {{- if .Values.primary.customStartupProbe }} - startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.primary.customStartupProbe "context" $) | nindent 12 }} - {{- else if .Values.primary.startupProbe.enabled }} - startupProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.primary.startupProbe "enabled") "context" $) | nindent 12 }} - exec: - command: - - /bin/sh - - -c - {{- if (include "postgresql.database" .) }} - - exec pg_isready -U {{ default "postgres" $customUser | quote }} -d "dbname={{ include "postgresql.database" . }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}{{- end }}" -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }} - {{- else }} - - exec pg_isready -U {{ default "postgres" $customUser | quote }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} -d "sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}"{{- end }} -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }} - {{- end }} - {{- end }} - {{- if .Values.primary.customLivenessProbe }} - livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.primary.customLivenessProbe "context" $) | nindent 12 }} - {{- else if .Values.primary.livenessProbe.enabled }} - livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.primary.livenessProbe "enabled") "context" $) | nindent 12 }} - exec: - command: - - /bin/sh - - -c - {{- if (include "postgresql.database" .) }} - - exec pg_isready -U {{ default "postgres" $customUser | quote }} -d "dbname={{ include "postgresql.database" . }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}{{- end }}" -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }} - {{- else }} - - exec pg_isready -U {{ default "postgres" $customUser | quote }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} -d "sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}"{{- end }} -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }} - {{- end }} - {{- end }} - {{- if .Values.primary.customReadinessProbe }} - readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.primary.customReadinessProbe "context" $) | nindent 12 }} - {{- else if .Values.primary.readinessProbe.enabled }} - readinessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.primary.readinessProbe "enabled") "context" $) | nindent 12 }} - exec: - command: - - /bin/sh - - -c - - -e - {{- include "postgresql.readinessProbeCommand" . | nindent 16 }} - {{- end }} - {{- end }} - {{- if .Values.primary.resources }} - resources: {{- toYaml .Values.primary.resources | nindent 12 }} - {{- end }} - {{- if .Values.primary.lifecycleHooks }} - lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.primary.lifecycleHooks "context" $) | nindent 12 }} - {{- end }} - volumeMounts: - {{- if or .Values.primary.initdb.scriptsConfigMap .Values.primary.initdb.scripts }} - - name: custom-init-scripts - mountPath: /docker-entrypoint-initdb.d/ - {{- end }} - {{- if .Values.primary.initdb.scriptsSecret }} - - name: custom-init-scripts-secret - mountPath: /docker-entrypoint-initdb.d/secret - {{- end }} - {{- if or .Values.primary.extendedConfiguration .Values.primary.existingExtendedConfigmap }} - - name: postgresql-extended-config - mountPath: /bitnami/postgresql/conf/conf.d/ - {{- end }} - {{- if .Values.auth.usePasswordFiles }} - - name: postgresql-password - mountPath: /opt/bitnami/postgresql/secrets/ - {{- end }} - {{- if .Values.tls.enabled }} - - name: postgresql-certificates - mountPath: /opt/bitnami/postgresql/certs - readOnly: true - {{- end }} - {{- if .Values.shmVolume.enabled }} - - name: dshm - mountPath: /dev/shm - {{- end }} - {{- if .Values.primary.persistence.enabled }} - - name: data - mountPath: {{ .Values.primary.persistence.mountPath }} - {{- if .Values.primary.persistence.subPath }} - subPath: {{ .Values.primary.persistence.subPath }} - {{- end }} - {{- end }} - {{- if or .Values.primary.configuration .Values.primary.pgHbaConfiguration .Values.primary.existingConfigmap }} - - name: postgresql-config - mountPath: /bitnami/postgresql/conf - {{- end }} - {{- if .Values.primary.extraVolumeMounts }} - {{- include "common.tplvalues.render" (dict "value" .Values.primary.extraVolumeMounts "context" $) | nindent 12 }} - {{- end }} - {{- if .Values.metrics.enabled }} - - name: metrics - image: {{ include "postgresql.metrics.image" . }} - imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }} - {{- if .Values.metrics.containerSecurityContext.enabled }} - securityContext: {{- omit .Values.metrics.containerSecurityContext "enabled" | toYaml | nindent 12 }} - {{- end }} - {{- if .Values.diagnosticMode.enabled }} - command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} - args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} - {{- else if .Values.metrics.customMetrics }} - args: ["--extend.query-path", "/conf/custom-metrics.yaml"] - {{- end }} - env: - {{- $database := required "In order to enable metrics you need to specify a database (.Values.auth.database or .Values.global.postgresql.auth.database)" (include "postgresql.database" .) }} - - name: DATA_SOURCE_URI - value: {{ printf "127.0.0.1:%d/%s?sslmode=disable" (int (include "postgresql.service.port" .)) $database }} - {{- if .Values.auth.usePasswordFiles }} - - name: DATA_SOURCE_PASS_FILE - value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (ternary "password" "postgres-password" (and (not (empty $customUser)) (ne $customUser "postgres"))) }} - {{- else }} - - name: DATA_SOURCE_PASS - valueFrom: - secretKeyRef: - name: {{ include "postgresql.secretName" . }} - key: {{ include "postgresql.userPasswordKey" . }} - {{- end }} - - name: DATA_SOURCE_USER - value: {{ default "postgres" $customUser | quote }} - {{- if .Values.metrics.extraEnvVars }} - {{- include "common.tplvalues.render" (dict "value" .Values.metrics.extraEnvVars "context" $) | nindent 12 }} - {{- end }} - ports: - - name: http-metrics - containerPort: {{ .Values.metrics.containerPorts.metrics }} - {{- if not .Values.diagnosticMode.enabled }} - {{- if .Values.metrics.customStartupProbe }} - startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.metrics.customStartupProbe "context" $) | nindent 12 }} - {{- else if .Values.metrics.startupProbe.enabled }} - startupProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.metrics.startupProbe "enabled") "context" $) | nindent 12 }} - tcpSocket: - port: http-metrics - {{- end }} - {{- if .Values.metrics.customLivenessProbe }} - livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.metrics.customLivenessProbe "context" $) | nindent 12 }} - {{- else if .Values.metrics.livenessProbe.enabled }} - livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.metrics.livenessProbe "enabled") "context" $) | nindent 12 }} - httpGet: - path: / - port: http-metrics - {{- end }} - {{- if .Values.metrics.customReadinessProbe }} - readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.metrics.customReadinessProbe "context" $) | nindent 12 }} - {{- else if .Values.metrics.readinessProbe.enabled }} - readinessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.metrics.readinessProbe "enabled") "context" $) | nindent 12 }} - httpGet: - path: / - port: http-metrics - {{- end }} - {{- end }} - volumeMounts: - {{- if .Values.auth.usePasswordFiles }} - - name: postgresql-password - mountPath: /opt/bitnami/postgresql/secrets/ - {{- end }} - {{- if .Values.metrics.customMetrics }} - - name: custom-metrics - mountPath: /conf - readOnly: true - {{- end }} - {{- if .Values.metrics.resources }} - resources: {{- toYaml .Values.metrics.resources | nindent 12 }} - {{- end }} - {{- end }} - {{- if .Values.primary.sidecars }} - {{- include "common.tplvalues.render" ( dict "value" .Values.primary.sidecars "context" $ ) | nindent 8 }} - {{- end }} - volumes: - {{- if or .Values.primary.configuration .Values.primary.pgHbaConfiguration .Values.primary.existingConfigmap }} - - name: postgresql-config - configMap: - name: {{ include "postgresql.primary.configmapName" . }} - {{- end }} - {{- if or .Values.primary.extendedConfiguration .Values.primary.existingExtendedConfigmap }} - - name: postgresql-extended-config - configMap: - name: {{ include "postgresql.primary.extendedConfigmapName" . }} - {{- end }} - {{- if .Values.auth.usePasswordFiles }} - - name: postgresql-password - secret: - secretName: {{ include "postgresql.secretName" . }} - {{- end }} - {{- if or .Values.primary.initdb.scriptsConfigMap .Values.primary.initdb.scripts }} - - name: custom-init-scripts - configMap: - name: {{ include "postgresql.initdb.scriptsCM" . }} - {{- end }} - {{- if .Values.primary.initdb.scriptsSecret }} - - name: custom-init-scripts-secret - secret: - secretName: {{ tpl .Values.primary.initdb.scriptsSecret $ }} - {{- end }} - {{- if .Values.tls.enabled }} - - name: raw-certificates - secret: - secretName: {{ include "postgresql.tlsSecretName" . }} - - name: postgresql-certificates - emptyDir: {} - {{- end }} - {{- if .Values.primary.extraVolumes }} - {{- include "common.tplvalues.render" ( dict "value" .Values.primary.extraVolumes "context" $ ) | nindent 8 }} - {{- end }} - {{- if and .Values.metrics.enabled .Values.metrics.customMetrics }} - - name: custom-metrics - configMap: - name: {{ printf "%s-metrics" (include "common.names.fullname" .) }} - {{- end }} - {{- if .Values.shmVolume.enabled }} - - name: dshm - emptyDir: - medium: Memory - {{- if .Values.shmVolume.sizeLimit }} - sizeLimit: {{ .Values.shmVolume.sizeLimit }} - {{- end }} - {{- end }} - {{- if and .Values.primary.persistence.enabled .Values.primary.persistence.existingClaim }} - - name: data - persistentVolumeClaim: - claimName: {{ tpl .Values.primary.persistence.existingClaim $ }} - {{- else if not .Values.primary.persistence.enabled }} - - name: data - emptyDir: {} - {{- else }} - volumeClaimTemplates: - - metadata: - name: data - {{- if .Values.primary.persistence.annotations }} - annotations: {{- include "common.tplvalues.render" (dict "value" .Values.primary.persistence.annotations "context" $) | nindent 10 }} - {{- end }} - {{- if .Values.primary.persistence.labels }} - labels: {{- include "common.tplvalues.render" (dict "value" .Values.primary.persistence.labels "context" $) | nindent 10 }} - {{- end }} - spec: - accessModes: - {{- range .Values.primary.persistence.accessModes }} - - {{ . | quote }} - {{- end }} - {{- if .Values.primary.persistence.dataSource }} - dataSource: {{- include "common.tplvalues.render" (dict "value" .Values.primary.persistence.dataSource "context" $) | nindent 10 }} - {{- end }} - resources: - requests: - storage: {{ .Values.primary.persistence.size | quote }} - {{- if .Values.primary.persistence.selector }} - selector: {{- include "common.tplvalues.render" (dict "value" .Values.primary.persistence.selector "context" $) | nindent 10 }} - {{- end }} - {{- include "common.storage.class" (dict "persistence" .Values.primary.persistence "global" .Values.global) | nindent 8 }} - {{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/svc-headless.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/svc-headless.yaml deleted file mode 100644 index b782631..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/svc-headless.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "postgresql.primary.svc.headless" . }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - app.kubernetes.io/component: primary - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} - # Use this annotation in addition to the actual publishNotReadyAddresses - # field below because the annotation will stop being respected soon but the - # field is broken in some versions of Kubernetes: - # https://github.com/kubernetes/kubernetes/issues/58662 - service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" -spec: - type: ClusterIP - clusterIP: None - # We want all pods in the StatefulSet to have their addresses published for - # the sake of the other Postgresql pods even before they're ready, since they - # have to be able to talk to each other in order to become ready. - publishNotReadyAddresses: true - ports: - - name: tcp-postgresql - port: {{ template "postgresql.service.port" . }} - targetPort: tcp-postgresql - selector: {{- include "common.labels.matchLabels" . | nindent 4 }} - app.kubernetes.io/component: primary diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/svc.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/svc.yaml deleted file mode 100644 index cf18480..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/primary/svc.yaml +++ /dev/null @@ -1,51 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "postgresql.primary.fullname" . }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - app.kubernetes.io/component: primary - annotations: - {{- if .Values.commonAnnotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.primary.service.annotations }} - {{- include "common.tplvalues.render" (dict "value" .Values.primary.service.annotations "context" $) | nindent 4 }} - {{- end }} -spec: - type: {{ .Values.primary.service.type }} - {{- if or (eq .Values.primary.service.type "LoadBalancer") (eq .Values.primary.service.type "NodePort") }} - externalTrafficPolicy: {{ .Values.primary.service.externalTrafficPolicy | quote }} - {{- end }} - {{- if and (eq .Values.primary.service.type "LoadBalancer") (not (empty .Values.primary.service.loadBalancerSourceRanges)) }} - loadBalancerSourceRanges: {{ .Values.primary.service.loadBalancerSourceRanges }} - {{- end }} - {{- if and (eq .Values.primary.service.type "LoadBalancer") (not (empty .Values.primary.service.loadBalancerIP)) }} - loadBalancerIP: {{ .Values.primary.service.loadBalancerIP }} - {{- end }} - {{- if and .Values.primary.service.clusterIP (eq .Values.primary.service.type "ClusterIP") }} - clusterIP: {{ .Values.primary.service.clusterIP }} - {{- end }} - {{- if .Values.primary.service.sessionAffinity }} - sessionAffinity: {{ .Values.primary.service.sessionAffinity }} - {{- end }} - {{- if .Values.primary.service.sessionAffinityConfig }} - sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.primary.service.sessionAffinityConfig "context" $) | nindent 4 }} - {{- end }} - ports: - - name: tcp-postgresql - port: {{ template "postgresql.service.port" . }} - targetPort: tcp-postgresql - {{- if and (or (eq .Values.primary.service.type "NodePort") (eq .Values.primary.service.type "LoadBalancer")) (not (empty .Values.primary.service.nodePorts.postgresql)) }} - nodePort: {{ .Values.primary.service.nodePorts.postgresql }} - {{- else if eq .Values.primary.service.type "ClusterIP" }} - nodePort: null - {{- end }} - {{- if .Values.primary.service.extraPorts }} - {{- include "common.tplvalues.render" (dict "value" .Values.primary.service.extraPorts "context" $) | nindent 4 }} - {{- end }} - selector: {{- include "common.labels.matchLabels" . | nindent 4 }} - app.kubernetes.io/component: primary diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/prometheusrule.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/prometheusrule.yaml deleted file mode 100644 index 24be710..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/prometheusrule.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if and .Values.metrics.enabled .Values.metrics.prometheusRule.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ include "common.names.fullname" . }} - namespace: {{ default .Release.Namespace .Values.metrics.prometheusRule.namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: metrics - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.metrics.prometheusRule.labels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.prometheusRule.labels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - groups: - - name: {{ include "common.names.fullname" . }} - rules: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.prometheusRule.rules "context" $ ) | nindent 8 }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/psp.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/psp.yaml deleted file mode 100644 index 48d1175..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/psp.yaml +++ /dev/null @@ -1,41 +0,0 @@ -{{- $pspAvailable := (semverCompare "<1.25-0" (include "common.capabilities.kubeVersion" .)) -}} -{{- if and $pspAvailable .Values.psp.create }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ include "common.names.fullname" . }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - privileged: false - volumes: - - 'configMap' - - 'secret' - - 'persistentVolumeClaim' - - 'emptyDir' - - 'projected' - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/extended-configmap.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/extended-configmap.yaml deleted file mode 100644 index e329d13..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/extended-configmap.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if (include "postgresql.readReplicas.createExtendedConfigmap" .) }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ printf "%s-extended-configuration" (include "postgresql.readReplica.fullname" .) }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: read - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -data: - override.conf: |- - {{- include "common.tplvalues.render" ( dict "value" .Values.readReplicas.extendedConfiguration "context" $ ) | nindent 4 }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/metrics-configmap.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/metrics-configmap.yaml deleted file mode 100644 index b00a6ec..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/metrics-configmap.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if and .Values.metrics.enabled .Values.metrics.customMetrics (eq .Values.architecture "replication") }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ printf "%s-metrics" (include "postgresql.readReplica.fullname" .) }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -data: - custom-metrics.yaml: {{ toYaml .Values.metrics.customMetrics | quote }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/metrics-svc.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/metrics-svc.yaml deleted file mode 100644 index b3e5497..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/metrics-svc.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- if and .Values.metrics.enabled (eq .Values.architecture "replication") }} -apiVersion: v1 -kind: Service -metadata: - name: {{ printf "%s-metrics" (include "postgresql.readReplica.fullname" .) }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: metrics-read - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - annotations: - {{- if .Values.commonAnnotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.metrics.service.annotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.service.annotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - type: ClusterIP - sessionAffinity: {{ .Values.metrics.service.sessionAffinity }} - {{- if .Values.metrics.service.clusterIP }} - clusterIP: {{ .Values.metrics.service.clusterIP }} - {{- end }} - ports: - - name: http-metrics - port: {{ .Values.metrics.service.ports.metrics }} - targetPort: http-metrics - selector: {{- include "common.labels.matchLabels" . | nindent 4 }} - app.kubernetes.io/component: read -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/networkpolicy.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/networkpolicy.yaml deleted file mode 100644 index c969cd7..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/networkpolicy.yaml +++ /dev/null @@ -1,36 +0,0 @@ -{{- if and .Values.networkPolicy.enabled (eq .Values.architecture "replication") .Values.networkPolicy.ingressRules.readReplicasAccessOnlyFrom.enabled }} -apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} -kind: NetworkPolicy -metadata: - name: {{ printf "%s-ingress" (include "postgresql.readReplica.fullname" .) }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: read - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - podSelector: - matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} - app.kubernetes.io/component: read - ingress: - {{- if and .Values.networkPolicy.ingressRules.readReplicasAccessOnlyFrom.enabled (or .Values.networkPolicy.ingressRules.readReplicasAccessOnlyFrom.namespaceSelector .Values.networkPolicy.ingressRules.readReplicasAccessOnlyFrom.podSelector) }} - - from: - {{- if .Values.networkPolicy.ingressRules.readReplicasAccessOnlyFrom.namespaceSelector }} - - namespaceSelector: - matchLabels: {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.readReplicasAccessOnlyFrom.namespaceSelector "context" $) | nindent 14 }} - {{- end }} - {{- if .Values.networkPolicy.ingressRules.readReplicasAccessOnlyFrom.podSelector }} - - podSelector: - matchLabels: {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.readReplicasAccessOnlyFrom.podSelector "context" $) | nindent 14 }} - {{- end }} - ports: - - port: {{ .Values.containerPorts.postgresql }} - {{- end }} - {{- if .Values.networkPolicy.ingressRules.readReplicasAccessOnlyFrom.customRules }} - {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.readReplicasAccessOnlyFrom.customRules "context" $) | nindent 4 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/servicemonitor.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/servicemonitor.yaml deleted file mode 100644 index d511d6b..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/servicemonitor.yaml +++ /dev/null @@ -1,48 +0,0 @@ -{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled (eq .Values.architecture "replication") }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ include "postgresql.readReplica.fullname" . }} - namespace: {{ default .Release.Namespace .Values.metrics.serviceMonitor.namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: metrics-read - {{- if .Values.metrics.serviceMonitor.labels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.serviceMonitor.labels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - {{- if .Values.metrics.serviceMonitor.jobLabel }} - jobLabel: {{ .Values.metrics.serviceMonitor.jobLabel }} - {{- end }} - selector: - matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} - {{- if .Values.metrics.serviceMonitor.selector }} - {{- include "common.tplvalues.render" (dict "value" .Values.metrics.serviceMonitor.selector "context" $) | nindent 6 }} - {{- end }} - app.kubernetes.io/component: metrics-read - endpoints: - - port: http-metrics - {{- if .Values.metrics.serviceMonitor.interval }} - interval: {{ .Values.metrics.serviceMonitor.interval }} - {{- end }} - {{- if .Values.metrics.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }} - {{- end }} - {{- if .Values.metrics.serviceMonitor.relabelings }} - relabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.serviceMonitor.relabelings "context" $) | nindent 6 }} - {{- end }} - {{- if .Values.metrics.serviceMonitor.metricRelabelings }} - metricRelabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.serviceMonitor.metricRelabelings "context" $) | nindent 6 }} - {{- end }} - {{- if .Values.metrics.serviceMonitor.honorLabels }} - honorLabels: {{ .Values.metrics.serviceMonitor.honorLabels }} - {{- end }} - namespaceSelector: - matchNames: - - {{ .Release.Namespace | quote }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/statefulset.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/statefulset.yaml deleted file mode 100644 index b3ff1da..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/statefulset.yaml +++ /dev/null @@ -1,531 +0,0 @@ -{{- if eq .Values.architecture "replication" }} -{{- $customUser := include "postgresql.username" . }} -apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }} -kind: StatefulSet -metadata: - name: {{ include "postgresql.readReplica.fullname" . }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - app.kubernetes.io/component: read - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.readReplicas.labels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.readReplicas.labels "context" $ ) | nindent 4 }} - {{- end }} - annotations: - {{- if .Values.commonAnnotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.readReplicas.annotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.readReplicas.annotations "context" $ ) | nindent 4 }} - {{- end }} -spec: - replicas: {{ .Values.readReplicas.replicaCount }} - serviceName: {{ include "postgresql.readReplica.svc.headless" . }} - {{- if .Values.readReplicas.updateStrategy }} - updateStrategy: {{- toYaml .Values.readReplicas.updateStrategy | nindent 4 }} - {{- end }} - selector: - matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} - app.kubernetes.io/component: read - template: - metadata: - name: {{ include "postgresql.readReplica.fullname" . }} - labels: {{- include "common.labels.standard" . | nindent 8 }} - app.kubernetes.io/component: read - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 8 }} - {{- end }} - {{- if .Values.readReplicas.podLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.readReplicas.podLabels "context" $ ) | nindent 8 }} - {{- end }} - annotations: - {{- if (include "postgresql.readReplicas.createExtendedConfigmap" .) }} - checksum/extended-configuration: {{ include (print $.Template.BasePath "/read/extended-configmap.yaml") . | sha256sum }} - {{- end }} - {{- if .Values.readReplicas.podAnnotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.readReplicas.podAnnotations "context" $ ) | nindent 8 }} - {{- end }} - spec: - {{- if .Values.readReplicas.extraPodSpec }} - {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.extraPodSpec "context" $) | nindent 6 }} - {{- end }} - serviceAccountName: {{ include "postgresql.serviceAccountName" . }} - {{- include "postgresql.imagePullSecrets" . | nindent 6 }} - {{- if .Values.readReplicas.hostAliases }} - hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.hostAliases "context" $) | nindent 8 }} - {{- end }} - {{- if .Values.readReplicas.affinity }} - affinity: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.affinity "context" $) | nindent 8 }} - {{- else }} - affinity: - podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.readReplicas.podAffinityPreset "component" "read" "context" $) | nindent 10 }} - podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.readReplicas.podAntiAffinityPreset "component" "read" "context" $) | nindent 10 }} - nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.readReplicas.nodeAffinityPreset.type "key" .Values.readReplicas.nodeAffinityPreset.key "values" .Values.readReplicas.nodeAffinityPreset.values) | nindent 10 }} - {{- end }} - {{- if .Values.readReplicas.nodeSelector }} - nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.nodeSelector "context" $) | nindent 8 }} - {{- end }} - {{- if .Values.readReplicas.tolerations }} - tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.tolerations "context" $) | nindent 8 }} - {{- end }} - {{- if .Values.readReplicas.topologySpreadConstraints }} - topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.topologySpreadConstraints "context" $) | nindent 8 }} - {{- end }} - {{- if .Values.readReplicas.priorityClassName }} - priorityClassName: {{ .Values.readReplicas.priorityClassName }} - {{- end }} - {{- if .Values.readReplicas.schedulerName }} - schedulerName: {{ .Values.readReplicas.schedulerName | quote }} - {{- end }} - {{- if .Values.readReplicas.terminationGracePeriodSeconds }} - terminationGracePeriodSeconds: {{ .Values.readReplicas.terminationGracePeriodSeconds }} - {{- end }} - {{- if .Values.readReplicas.podSecurityContext.enabled }} - securityContext: {{- omit .Values.readReplicas.podSecurityContext "enabled" | toYaml | nindent 8 }} - {{- end }} - hostNetwork: {{ .Values.readReplicas.hostNetwork }} - hostIPC: {{ .Values.readReplicas.hostIPC }} - initContainers: - {{- if and .Values.tls.enabled (not .Values.volumePermissions.enabled) }} - - name: copy-certs - image: {{ include "postgresql.volumePermissions.image" . }} - imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }} - {{- if .Values.readReplicas.resources }} - resources: {{- toYaml .Values.readReplicas.resources | nindent 12 }} - {{- end }} - # We don't require a privileged container in this case - {{- if .Values.readReplicas.containerSecurityContext.enabled }} - securityContext: {{- omit .Values.readReplicas.containerSecurityContext "enabled" | toYaml | nindent 12 }} - {{- end }} - command: - - /bin/sh - - -ec - - | - cp /tmp/certs/* /opt/bitnami/postgresql/certs/ - chmod 600 {{ include "postgresql.tlsCertKey" . }} - volumeMounts: - - name: raw-certificates - mountPath: /tmp/certs - - name: postgresql-certificates - mountPath: /opt/bitnami/postgresql/certs - {{- else if and .Values.volumePermissions.enabled (or .Values.readReplicas.persistence.enabled .Values.shmVolume.enabled) }} - - name: init-chmod-data - image: {{ include "postgresql.volumePermissions.image" . }} - imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }} - {{- if .Values.readReplicas.resources }} - resources: {{- toYaml .Values.readReplicas.resources | nindent 12 }} - {{- end }} - command: - - /bin/sh - - -ec - - | - {{- if .Values.readReplicas.persistence.enabled }} - {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) "auto" }} - chown `id -u`:`id -G | cut -d " " -f2` {{ .Values.readReplicas.persistence.mountPath }} - {{- else }} - chown {{ .Values.readReplicas.containerSecurityContext.runAsUser }}:{{ .Values.readReplicas.podSecurityContext.fsGroup }} {{ .Values.readReplicas.persistence.mountPath }} - {{- end }} - mkdir -p {{ .Values.readReplicas.persistence.mountPath }}/data {{- if (include "postgresql.mountConfigurationCM" .) }} {{ .Values.readReplicas.persistence.mountPath }}/conf {{- end }} - chmod 700 {{ .Values.readReplicas.persistence.mountPath }}/data {{- if (include "postgresql.mountConfigurationCM" .) }} {{ .Values.readReplicas.persistence.mountPath }}/conf {{- end }} - find {{ .Values.readReplicas.persistence.mountPath }} -mindepth 1 -maxdepth 1 {{- if not (include "postgresql.mountConfigurationCM" .) }} -not -name "conf" {{- end }} -not -name ".snapshot" -not -name "lost+found" | \ - {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) "auto" }} - xargs -r chown -R `id -u`:`id -G | cut -d " " -f2` - {{- else }} - xargs -r chown -R {{ .Values.readReplicas.containerSecurityContext.runAsUser }}:{{ .Values.readReplicas.podSecurityContext.fsGroup }} - {{- end }} - {{- end }} - {{- if .Values.shmVolume.enabled }} - chmod -R 777 /dev/shm - {{- end }} - {{- if .Values.tls.enabled }} - cp /tmp/certs/* /opt/bitnami/postgresql/certs/ - {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) "auto" }} - chown -R `id -u`:`id -G | cut -d " " -f2` /opt/bitnami/postgresql/certs/ - {{- else }} - chown -R {{ .Values.readReplicas.containerSecurityContext.runAsUser }}:{{ .Values.readReplicas.podSecurityContext.fsGroup }} /opt/bitnami/postgresql/certs/ - {{- end }} - chmod 600 {{ include "postgresql.tlsCertKey" . }} - {{- end }} - {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) "auto" }} - securityContext: {{- omit .Values.volumePermissions.containerSecurityContext "runAsUser" | toYaml | nindent 12 }} - {{- else }} - securityContext: {{- .Values.volumePermissions.containerSecurityContext | toYaml | nindent 12 }} - {{- end }} - volumeMounts: - {{ if .Values.readReplicas.persistence.enabled }} - - name: data - mountPath: {{ .Values.readReplicas.persistence.mountPath }} - {{- if .Values.readReplicas.persistence.subPath }} - subPath: {{ .Values.readReplicas.persistence.subPath }} - {{- end }} - {{- end }} - {{- if .Values.shmVolume.enabled }} - - name: dshm - mountPath: /dev/shm - {{- end }} - {{- if .Values.tls.enabled }} - - name: raw-certificates - mountPath: /tmp/certs - - name: postgresql-certificates - mountPath: /opt/bitnami/postgresql/certs - {{- end }} - {{- end }} - {{- if .Values.readReplicas.initContainers }} - {{- include "common.tplvalues.render" ( dict "value" .Values.readReplicas.initContainers "context" $ ) | nindent 8 }} - {{- end }} - containers: - - name: postgresql - image: {{ include "postgresql.image" . }} - imagePullPolicy: {{ .Values.image.pullPolicy | quote }} - {{- if .Values.readReplicas.containerSecurityContext.enabled }} - securityContext: {{- omit .Values.readReplicas.containerSecurityContext "enabled" | toYaml | nindent 12 }} - {{- end }} - {{- if .Values.diagnosticMode.enabled }} - command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} - {{- else if .Values.readReplicas.command }} - command: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.command "context" $) | nindent 12 }} - {{- end }} - {{- if .Values.diagnosticMode.enabled }} - args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} - {{- else if .Values.readReplicas.args }} - args: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.args "context" $) | nindent 12 }} - {{- end }} - env: - - name: BITNAMI_DEBUG - value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }} - - name: POSTGRESQL_PORT_NUMBER - value: {{ .Values.containerPorts.postgresql | quote }} - - name: POSTGRESQL_VOLUME_DIR - value: {{ .Values.readReplicas.persistence.mountPath | quote }} - {{- if .Values.readReplicas.persistence.mountPath }} - - name: PGDATA - value: {{ .Values.postgresqlDataDir | quote }} - {{- end }} - # Authentication - {{- if and (not (empty $customUser)) (ne $customUser "postgres") .Values.auth.enablePostgresUser }} - {{- if .Values.auth.usePasswordFiles }} - - name: POSTGRES_POSTGRES_PASSWORD_FILE - value: "/opt/bitnami/postgresql/secrets/postgres-password" - {{- else }} - - name: POSTGRES_POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: {{ include "postgresql.secretName" . }} - key: {{ include "postgresql.adminPasswordKey" . }} - {{- end }} - {{- end }} - {{- if .Values.auth.usePasswordFiles }} - - name: POSTGRES_PASSWORD_FILE - value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (ternary "password" "postgres-password" (and (not (empty $customUser)) (ne $customUser "postgres"))) }} - {{- else }} - - name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: {{ include "postgresql.secretName" . }} - key: {{ include "postgresql.userPasswordKey" . }} - {{- end }} - # Replication - - name: POSTGRES_REPLICATION_MODE - value: "slave" - - name: POSTGRES_REPLICATION_USER - value: {{ .Values.auth.replicationUsername | quote }} - {{- if .Values.auth.usePasswordFiles }} - - name: POSTGRES_REPLICATION_PASSWORD_FILE - value: "/opt/bitnami/postgresql/secrets/replication-password" - {{- else }} - - name: POSTGRES_REPLICATION_PASSWORD - valueFrom: - secretKeyRef: - name: {{ include "postgresql.secretName" . }} - key: {{ include "postgresql.replicationPasswordKey" . }} - {{- end }} - - name: POSTGRES_CLUSTER_APP_NAME - value: {{ .Values.replication.applicationName }} - - name: POSTGRES_MASTER_HOST - value: {{ include "postgresql.primary.fullname" . }} - - name: POSTGRES_MASTER_PORT_NUMBER - value: {{ include "postgresql.service.port" . | quote }} - # TLS - - name: POSTGRESQL_ENABLE_TLS - value: {{ ternary "yes" "no" .Values.tls.enabled | quote }} - {{- if .Values.tls.enabled }} - - name: POSTGRESQL_TLS_PREFER_SERVER_CIPHERS - value: {{ ternary "yes" "no" .Values.tls.preferServerCiphers | quote }} - - name: POSTGRESQL_TLS_CERT_FILE - value: {{ include "postgresql.tlsCert" . }} - - name: POSTGRESQL_TLS_KEY_FILE - value: {{ include "postgresql.tlsCertKey" . }} - {{- if .Values.tls.certCAFilename }} - - name: POSTGRESQL_TLS_CA_FILE - value: {{ include "postgresql.tlsCACert" . }} - {{- end }} - {{- if .Values.tls.crlFilename }} - - name: POSTGRESQL_TLS_CRL_FILE - value: {{ include "postgresql.tlsCRL" . }} - {{- end }} - {{- end }} - # Audit - - name: POSTGRESQL_LOG_HOSTNAME - value: {{ .Values.audit.logHostname | quote }} - - name: POSTGRESQL_LOG_CONNECTIONS - value: {{ .Values.audit.logConnections | quote }} - - name: POSTGRESQL_LOG_DISCONNECTIONS - value: {{ .Values.audit.logDisconnections | quote }} - {{- if .Values.audit.logLinePrefix }} - - name: POSTGRESQL_LOG_LINE_PREFIX - value: {{ .Values.audit.logLinePrefix | quote }} - {{- end }} - {{- if .Values.audit.logTimezone }} - - name: POSTGRESQL_LOG_TIMEZONE - value: {{ .Values.audit.logTimezone | quote }} - {{- end }} - {{- if .Values.audit.pgAuditLog }} - - name: POSTGRESQL_PGAUDIT_LOG - value: {{ .Values.audit.pgAuditLog | quote }} - {{- end }} - - name: POSTGRESQL_PGAUDIT_LOG_CATALOG - value: {{ .Values.audit.pgAuditLogCatalog | quote }} - # Others - - name: POSTGRESQL_CLIENT_MIN_MESSAGES - value: {{ .Values.audit.clientMinMessages | quote }} - - name: POSTGRESQL_SHARED_PRELOAD_LIBRARIES - value: {{ .Values.postgresqlSharedPreloadLibraries | quote }} - {{- if .Values.readReplicas.extraEnvVars }} - {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.extraEnvVars "context" $) | nindent 12 }} - {{- end }} - {{- if or .Values.readReplicas.extraEnvVarsCM .Values.readReplicas.extraEnvVarsSecret }} - envFrom: - {{- if .Values.readReplicas.extraEnvVarsCM }} - - configMapRef: - name: {{ .Values.readReplicas.extraEnvVarsCM }} - {{- end }} - {{- if .Values.readReplicas.extraEnvVarsSecret }} - - secretRef: - name: {{ .Values.readReplicas.extraEnvVarsSecret }} - {{- end }} - {{- end }} - ports: - - name: tcp-postgresql - containerPort: {{ .Values.containerPorts.postgresql }} - {{- if not .Values.diagnosticMode.enabled }} - {{- if .Values.readReplicas.customStartupProbe }} - startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.customStartupProbe "context" $) | nindent 12 }} - {{- else if .Values.readReplicas.startupProbe.enabled }} - startupProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.readReplicas.startupProbe "enabled") "context" $) | nindent 12 }} - exec: - command: - - /bin/sh - - -c - {{- if (include "postgresql.database" .) }} - - exec pg_isready -U {{ default "postgres" $customUser| quote }} -d "dbname={{ include "postgresql.database" . }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}{{- end }}" -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }} - {{- else }} - - exec pg_isready -U {{ default "postgres" $customUser | quote }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} -d "sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}"{{- end }} -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }} - {{- end }} - {{- end }} - {{- if .Values.readReplicas.customLivenessProbe }} - livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.customLivenessProbe "context" $) | nindent 12 }} - {{- else if .Values.readReplicas.livenessProbe.enabled }} - livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.readReplicas.livenessProbe "enabled") "context" $) | nindent 12 }} - exec: - command: - - /bin/sh - - -c - {{- if (include "postgresql.database" .) }} - - exec pg_isready -U {{ default "postgres" $customUser | quote }} -d "dbname={{ include "postgresql.database" . }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}{{- end }}" -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }} - {{- else }} - - exec pg_isready -U {{default "postgres" $customUser | quote }} {{- if and .Values.tls.enabled .Values.tls.certCAFilename }} -d "sslcert={{ include "postgresql.tlsCert" . }} sslkey={{ include "postgresql.tlsCertKey" . }}"{{- end }} -h 127.0.0.1 -p {{ .Values.containerPorts.postgresql }} - {{- end }} - {{- end }} - {{- if .Values.readReplicas.customReadinessProbe }} - readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.customReadinessProbe "context" $) | nindent 12 }} - {{- else if .Values.readReplicas.readinessProbe.enabled }} - readinessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.readReplicas.readinessProbe "enabled") "context" $) | nindent 12 }} - exec: - command: - - /bin/sh - - -c - - -e - {{- include "postgresql.readinessProbeCommand" . | nindent 16 }} - {{- end }} - {{- end }} - {{- if .Values.readReplicas.resources }} - resources: {{- toYaml .Values.readReplicas.resources | nindent 12 }} - {{- end }} - {{- if .Values.readReplicas.lifecycleHooks }} - lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.lifecycleHooks "context" $) | nindent 12 }} - {{- end }} - volumeMounts: - {{- if .Values.auth.usePasswordFiles }} - - name: postgresql-password - mountPath: /opt/bitnami/postgresql/secrets/ - {{- end }} - {{- if .Values.readReplicas.extendedConfiguration }} - - name: postgresql-extended-config - mountPath: /bitnami/postgresql/conf/conf.d/ - {{- end }} - {{- if .Values.tls.enabled }} - - name: postgresql-certificates - mountPath: /opt/bitnami/postgresql/certs - readOnly: true - {{- end }} - {{- if .Values.shmVolume.enabled }} - - name: dshm - mountPath: /dev/shm - {{- end }} - {{- if .Values.readReplicas.persistence.enabled }} - - name: data - mountPath: {{ .Values.readReplicas.persistence.mountPath }} - {{- if .Values.readReplicas.persistence.subPath }} - subPath: {{ .Values.readReplicas.persistence.subPath }} - {{- end }} - {{- end }} - {{- if .Values.readReplicas.extraVolumeMounts }} - {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.extraVolumeMounts "context" $) | nindent 12 }} - {{- end }} - {{- if .Values.metrics.enabled }} - - name: metrics - image: {{ include "postgresql.metrics.image" . }} - imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }} - {{- if .Values.metrics.containerSecurityContext.enabled }} - securityContext: {{- omit .Values.metrics.containerSecurityContext "enabled" | toYaml | nindent 12 }} - {{- end }} - {{- if .Values.diagnosticMode.enabled }} - command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} - args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} - {{- else if .Values.metrics.customMetrics }} - args: [ "--extend.query-path", "/conf/custom-metrics.yaml" ] - {{- end }} - env: - {{- $database := required "In order to enable metrics you need to specify a database (.Values.auth.database or .Values.global.postgresql.auth.database)" (include "postgresql.database" .) }} - - name: DATA_SOURCE_URI - value: {{ printf "127.0.0.1:%d/%s?sslmode=disable" (int (include "postgresql.service.port" .)) $database }} - {{- if .Values.auth.usePasswordFiles }} - - name: DATA_SOURCE_PASS_FILE - value: {{ printf "/opt/bitnami/postgresql/secrets/%s" (ternary "password" "postgres-password" (and (not (empty $customUser)) (ne $customUser "postgres"))) }} - {{- else }} - - name: DATA_SOURCE_PASS - valueFrom: - secretKeyRef: - name: {{ include "postgresql.secretName" . }} - key: {{ include "postgresql.userPasswordKey" . }} - {{- end }} - - name: DATA_SOURCE_USER - value: {{ default "postgres" $customUser | quote }} - {{- if .Values.metrics.extraEnvVars }} - {{- include "common.tplvalues.render" (dict "value" .Values.metrics.extraEnvVars "context" $) | nindent 12 }} - {{- end }} - ports: - - name: http-metrics - containerPort: {{ .Values.metrics.containerPorts.metrics }} - {{- if not .Values.diagnosticMode.enabled }} - {{- if .Values.metrics.customStartupProbe }} - startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.metrics.customStartupProbe "context" $) | nindent 12 }} - {{- else if .Values.metrics.startupProbe.enabled }} - startupProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.metrics.startupProbe "enabled") "context" $) | nindent 12 }} - tcpSocket: - port: http-metrics - {{- end }} - {{- if .Values.metrics.customLivenessProbe }} - livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.metrics.customLivenessProbe "context" $) | nindent 12 }} - {{- else if .Values.metrics.livenessProbe.enabled }} - livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.metrics.livenessProbe "enabled") "context" $) | nindent 12 }} - httpGet: - path: / - port: http-metrics - {{- end }} - {{- if .Values.metrics.customReadinessProbe }} - readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.metrics.customReadinessProbe "context" $) | nindent 12 }} - {{- else if .Values.metrics.readinessProbe.enabled }} - readinessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.metrics.readinessProbe "enabled") "context" $) | nindent 12 }} - httpGet: - path: / - port: http-metrics - {{- end }} - {{- end }} - volumeMounts: - {{- if .Values.auth.usePasswordFiles }} - - name: postgresql-password - mountPath: /opt/bitnami/postgresql/secrets/ - {{- end }} - {{- if .Values.metrics.customMetrics }} - - name: custom-metrics - mountPath: /conf - readOnly: true - {{- end }} - {{- if .Values.metrics.resources }} - resources: {{- toYaml .Values.metrics.resources | nindent 12 }} - {{- end }} - {{- end }} - {{- if .Values.readReplicas.sidecars }} - {{- include "common.tplvalues.render" ( dict "value" .Values.readReplicas.sidecars "context" $ ) | nindent 8 }} - {{- end }} - volumes: - {{- if .Values.readReplicas.extendedConfiguration }} - - name: postgresql-extended-config - configMap: - name: {{ include "postgresql.readReplicas.extendedConfigmapName" . }} - {{- end }} - {{- if .Values.auth.usePasswordFiles }} - - name: postgresql-password - secret: - secretName: {{ include "postgresql.secretName" . }} - {{- end }} - {{- if .Values.tls.enabled }} - - name: raw-certificates - secret: - secretName: {{ include "postgresql.tlsSecretName" . }} - - name: postgresql-certificates - emptyDir: {} - {{- end }} - {{- if and .Values.metrics.enabled .Values.metrics.customMetrics }} - - name: custom-metrics - configMap: - name: {{ printf "%s-metrics" (include "common.names.fullname" .) }} - {{- end }} - {{- if .Values.shmVolume.enabled }} - - name: dshm - emptyDir: - medium: Memory - {{- if .Values.shmVolume.sizeLimit }} - sizeLimit: {{ .Values.shmVolume.sizeLimit }} - {{- end }} - {{- end }} - {{- if .Values.readReplicas.extraVolumes }} - {{- include "common.tplvalues.render" ( dict "value" .Values.readReplicas.extraVolumes "context" $ ) | nindent 8 }} - {{- end }} - {{- if and .Values.readReplicas.persistence.enabled .Values.readReplicas.persistence.existingClaim }} - - name: data - persistentVolumeClaim: - claimName: {{ tpl .Values.readReplicas.persistence.existingClaim $ }} - {{- else if not .Values.readReplicas.persistence.enabled }} - - name: data - emptyDir: {} - {{- else }} - volumeClaimTemplates: - - metadata: - name: data - {{- if .Values.readReplicas.persistence.annotations }} - annotations: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.persistence.annotations "context" $) | nindent 10 }} - {{- end }} - {{- if .Values.readReplicas.persistence.labels }} - labels: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.persistence.labels "context" $) | nindent 10 }} - {{- end }} - spec: - accessModes: - {{- range .Values.readReplicas.persistence.accessModes }} - - {{ . | quote }} - {{- end }} - {{- if .Values.readReplicas.persistence.dataSource }} - dataSource: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.persistence.dataSource "context" $) | nindent 10 }} - {{- end }} - resources: - requests: - storage: {{ .Values.readReplicas.persistence.size | quote }} - {{- if .Values.readReplicas.persistence.selector }} - selector: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.persistence.selector "context" $) | nindent 10 }} - {{- end -}} - {{- include "common.storage.class" (dict "persistence" .Values.readReplicas.persistence "global" .Values.global) | nindent 8 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/svc-headless.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/svc-headless.yaml deleted file mode 100644 index 0371e49..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/svc-headless.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if eq .Values.architecture "replication" }} -apiVersion: v1 -kind: Service -metadata: - name: {{ include "postgresql.readReplica.svc.headless" . }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - app.kubernetes.io/component: read - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} - # Use this annotation in addition to the actual publishNotReadyAddresses - # field below because the annotation will stop being respected soon but the - # field is broken in some versions of Kubernetes: - # https://github.com/kubernetes/kubernetes/issues/58662 - service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" -spec: - type: ClusterIP - clusterIP: None - # We want all pods in the StatefulSet to have their addresses published for - # the sake of the other Postgresql pods even before they're ready, since they - # have to be able to talk to each other in order to become ready. - publishNotReadyAddresses: true - ports: - - name: tcp-postgresql - port: {{ include "postgresql.readReplica.service.port" . }} - targetPort: tcp-postgresql - selector: {{- include "common.labels.matchLabels" . | nindent 4 }} - app.kubernetes.io/component: read -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/svc.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/svc.yaml deleted file mode 100644 index 3eece4d..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/read/svc.yaml +++ /dev/null @@ -1,53 +0,0 @@ -{{- if eq .Values.architecture "replication" }} -apiVersion: v1 -kind: Service -metadata: - name: {{ include "postgresql.readReplica.fullname" . }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - app.kubernetes.io/component: read - annotations: - {{- if .Values.commonAnnotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.readReplicas.service.annotations }} - {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.service.annotations "context" $) | nindent 4 }} - {{- end }} -spec: - type: {{ .Values.readReplicas.service.type }} - {{- if or (eq .Values.readReplicas.service.type "LoadBalancer") (eq .Values.readReplicas.service.type "NodePort") }} - externalTrafficPolicy: {{ .Values.readReplicas.service.externalTrafficPolicy | quote }} - {{- end }} - {{- if and (eq .Values.readReplicas.service.type "LoadBalancer") (not (empty .Values.readReplicas.service.loadBalancerSourceRanges)) }} - loadBalancerSourceRanges: {{ .Values.readReplicas.service.loadBalancerSourceRanges }} - {{- end }} - {{- if and (eq .Values.readReplicas.service.type "LoadBalancer") (not (empty .Values.readReplicas.service.loadBalancerIP)) }} - loadBalancerIP: {{ .Values.readReplicas.service.loadBalancerIP }} - {{- end }} - {{- if and .Values.readReplicas.service.clusterIP (eq .Values.readReplicas.service.type "ClusterIP") }} - clusterIP: {{ .Values.readReplicas.service.clusterIP }} - {{- end }} - {{- if .Values.readReplicas.service.sessionAffinity }} - sessionAffinity: {{ .Values.readReplicas.service.sessionAffinity }} - {{- end }} - {{- if .Values.readReplicas.service.sessionAffinityConfig }} - sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.service.sessionAffinityConfig "context" $) | nindent 4 }} - {{- end }} - ports: - - name: tcp-postgresql - port: {{ include "postgresql.readReplica.service.port" . }} - targetPort: tcp-postgresql - {{- if and (or (eq .Values.readReplicas.service.type "NodePort") (eq .Values.readReplicas.service.type "LoadBalancer")) (not (empty .Values.readReplicas.service.nodePorts.postgresql)) }} - nodePort: {{ .Values.readReplicas.service.nodePorts.postgresql }} - {{- else if eq .Values.readReplicas.service.type "ClusterIP" }} - nodePort: null - {{- end }} - {{- if .Values.readReplicas.service.extraPorts }} - {{- include "common.tplvalues.render" (dict "value" .Values.readReplicas.service.extraPorts "context" $) | nindent 4 }} - {{- end }} - selector: {{- include "common.labels.matchLabels" . | nindent 4 }} - app.kubernetes.io/component: read -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/role.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/role.yaml deleted file mode 100644 index 00f9222..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/role.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- if .Values.rbac.create }} -kind: Role -apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }} -metadata: - name: {{ include "common.names.fullname" . }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -# yamllint disable rule:indentation -rules: - {{- $pspAvailable := (semverCompare "<1.25-0" (include "common.capabilities.kubeVersion" .)) -}} - {{- if and $pspAvailable .Values.psp.create }} - - apiGroups: - - 'policy' - resources: - - 'podsecuritypolicies' - verbs: - - 'use' - resourceNames: - - {{ include "common.names.fullname" . }} - {{- end }} - {{- if .Values.rbac.rules }} - {{- include "common.tplvalues.render" ( dict "value" .Values.rbac.rules "context" $ ) | nindent 2 }} - {{- end }} -# yamllint enable rule:indentation -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/rolebinding.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/rolebinding.yaml deleted file mode 100644 index 0311c0e..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/rolebinding.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if .Values.rbac.create }} -kind: RoleBinding -apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }} -metadata: - name: {{ include "common.names.fullname" . }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -roleRef: - kind: Role - name: {{ include "common.names.fullname" . }} - apiGroup: rbac.authorization.k8s.io -subjects: - - kind: ServiceAccount - name: {{ include "postgresql.serviceAccountName" . }} - namespace: {{ .Release.Namespace | quote }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/secrets.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/secrets.yaml deleted file mode 100644 index 5f28fb3..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/secrets.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- if (include "postgresql.createSecret" .) }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ include "common.names.fullname" . }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -type: Opaque -data: - {{- if .Values.auth.enablePostgresUser }} - postgres-password: {{ include "common.secrets.passwords.manage" (dict "secret" (include "common.names.fullname" .) "key" "postgres-password" "providedValues" (list "global.postgresql.auth.postgresPassword" "auth.postgresPassword") "context" $) }} - {{- end }} - {{- if not (empty (include "postgresql.username" .)) }} - password: {{ include "common.secrets.passwords.manage" (dict "secret" (include "common.names.fullname" .) "key" "password" "providedValues" (list "global.postgresql.auth.password" "auth.password") "context" $) }} - {{- end }} - {{- if eq .Values.architecture "replication" }} - replication-password: {{ include "common.secrets.passwords.manage" (dict "secret" (include "common.names.fullname" .) "key" "replication-password" "providedValues" (list "auth.replicationPassword") "context" $) }} - {{- end }} - # We don't auto-generate LDAP password when it's not provided as we do for other passwords - {{- if and .Values.ldap.enabled (or .Values.ldap.bind_password .Values.ldap.bindpw) }} - ldap-password: {{ coalesce .Values.ldap.bind_password .Values.ldap.bindpw | b64enc | quote }} - {{- end }} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/serviceaccount.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/serviceaccount.yaml deleted file mode 100644 index 179f8f2..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/serviceaccount.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if .Values.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "postgresql.serviceAccountName" . }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - annotations: - {{- if .Values.commonAnnotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.serviceAccount.annotations }} - {{- include "common.tplvalues.render" ( dict "value" .Values.serviceAccount.annotations "context" $ ) | nindent 4 }} - {{- end }} -automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/templates/tls-secrets.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/templates/tls-secrets.yaml deleted file mode 100644 index 59c5776..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/templates/tls-secrets.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if (include "postgresql.createTlsSecret" . ) }} -{{- $ca := genCA "postgresql-ca" 365 }} -{{- $fullname := include "common.names.fullname" . }} -{{- $releaseNamespace := .Release.Namespace }} -{{- $clusterDomain := .Values.clusterDomain }} -{{- $primaryHeadlessServiceName := include "postgresql.primary.svc.headless" . }} -{{- $readHeadlessServiceName := include "postgresql.readReplica.svc.headless" . }} -{{- $altNames := list (printf "*.%s.%s.svc.%s" $fullname $releaseNamespace $clusterDomain) (printf "%s.%s.svc.%s" $fullname $releaseNamespace $clusterDomain) (printf "*.%s.%s.svc.%s" $primaryHeadlessServiceName $releaseNamespace $clusterDomain) (printf "%s.%s.svc.%s" $primaryHeadlessServiceName $releaseNamespace $clusterDomain) (printf "*.%s.%s.svc.%s" $readHeadlessServiceName $releaseNamespace $clusterDomain) (printf "%s.%s.svc.%s" $readHeadlessServiceName $releaseNamespace $clusterDomain) $fullname }} -{{- $crt := genSignedCert $fullname nil $altNames 365 $ca }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ printf "%s-crt" (include "common.names.fullname" .) }} - namespace: {{ .Release.Namespace | quote }} - labels: {{- include "common.labels.standard" . | nindent 4 }} - {{- if .Values.commonLabels }} - {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} - {{- end }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} - {{- end }} -type: kubernetes.io/tls -data: - ca.crt: {{ $ca.Cert | b64enc | quote }} - tls.crt: {{ $crt.Cert | b64enc | quote }} - tls.key: {{ $crt.Key | b64enc | quote }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/values.schema.json b/manifests/helm/kong/2.46.0/charts/postgresql/values.schema.json deleted file mode 100644 index fc41483..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/values.schema.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema#", - "type": "object", - "properties": { - "architecture": { - "type": "string", - "title": "PostgreSQL architecture", - "form": true, - "description": "Allowed values: `standalone` or `replication`" - }, - "auth": { - "type": "object", - "title": "Authentication configuration", - "form": true, - "properties": { - "enablePostgresUser": { - "type": "boolean", - "title": "Enable \"postgres\" admin user", - "description": "Assign a password to the \"postgres\" admin user. Otherwise, remote access will be blocked for this user", - "form": true - }, - "postgresPassword": { - "type": "string", - "title": "Password for the \"postgres\" admin user", - "description": "Defaults to a random 10-character alphanumeric string if not set", - "form": true - }, - "database": { - "type": "string", - "title": "PostgreSQL custom database", - "description": "Name of the custom database to be created during the 1st initialization of PostgreSQL", - "form": true - }, - "username": { - "type": "string", - "title": "PostgreSQL custom user", - "description": "Name of the custom user to be created during the 1st initialization of PostgreSQL. This user only has permissions on the PostgreSQL custom database", - "form": true - }, - "password": { - "type": "string", - "title": "Password for the custom user to create", - "description": "Defaults to a random 10-character alphanumeric string if not set", - "form": true - }, - "replicationUsername": { - "type": "string", - "title": "PostgreSQL replication user", - "description": "Name of user used to manage replication.", - "form": true, - "hidden": { - "value": "standalone", - "path": "architecture" - } - }, - "replicationPassword": { - "type": "string", - "title": "Password for PostgreSQL replication user", - "description": "Defaults to a random 10-character alphanumeric string if not set", - "form": true, - "hidden": { - "value": "standalone", - "path": "architecture" - } - } - } - }, - "persistence": { - "type": "object", - "properties": { - "size": { - "type": "string", - "title": "Persistent Volume Size", - "form": true, - "render": "slider", - "sliderMin": 1, - "sliderMax": 100, - "sliderUnit": "Gi" - } - } - }, - "resources": { - "type": "object", - "title": "Required Resources", - "description": "Configure resource requests", - "form": true, - "properties": { - "requests": { - "type": "object", - "properties": { - "memory": { - "type": "string", - "form": true, - "render": "slider", - "title": "Memory Request", - "sliderMin": 10, - "sliderMax": 2048, - "sliderUnit": "Mi" - }, - "cpu": { - "type": "string", - "form": true, - "render": "slider", - "title": "CPU Request", - "sliderMin": 10, - "sliderMax": 2000, - "sliderUnit": "m" - } - } - } - } - }, - "replication": { - "type": "object", - "form": true, - "title": "Replication Details", - "properties": { - "enabled": { - "type": "boolean", - "title": "Enable Replication", - "form": true - }, - "readReplicas": { - "type": "integer", - "title": "read Replicas", - "form": true, - "hidden": { - "value": "standalone", - "path": "architecture" - } - } - } - }, - "volumePermissions": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "form": true, - "title": "Enable Init Containers", - "description": "Change the owner of the persist volume mountpoint to RunAsUser:fsGroup" - } - } - }, - "metrics": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "title": "Configure metrics exporter", - "form": true - } - } - } - } -} diff --git a/manifests/helm/kong/2.46.0/charts/postgresql/values.yaml b/manifests/helm/kong/2.46.0/charts/postgresql/values.yaml deleted file mode 100644 index 9f80c10..0000000 --- a/manifests/helm/kong/2.46.0/charts/postgresql/values.yaml +++ /dev/null @@ -1,1399 +0,0 @@ -## @section Global parameters -## Please, note that this will override the parameters, including dependencies, configured to use the global value -## -global: - ## @param global.imageRegistry Global Docker image registry - ## - imageRegistry: "" - ## @param global.imagePullSecrets Global Docker registry secret names as an array - ## e.g. - ## imagePullSecrets: - ## - myRegistryKeySecretName - ## - imagePullSecrets: [] - ## @param global.storageClass Global StorageClass for Persistent Volume(s) - ## - storageClass: "" - postgresql: - ## @param global.postgresql.auth.postgresPassword Password for the "postgres" admin user (overrides `auth.postgresPassword`) - ## @param global.postgresql.auth.username Name for a custom user to create (overrides `auth.username`) - ## @param global.postgresql.auth.password Password for the custom user to create (overrides `auth.password`) - ## @param global.postgresql.auth.database Name for a custom database to create (overrides `auth.database`) - ## @param global.postgresql.auth.existingSecret Name of existing secret to use for PostgreSQL credentials (overrides `auth.existingSecret`). - ## @param global.postgresql.auth.secretKeys.adminPasswordKey Name of key in existing secret to use for PostgreSQL credentials (overrides `auth.secretKeys.adminPasswordKey`). Only used when `global.postgresql.auth.existingSecret` is set. - ## @param global.postgresql.auth.secretKeys.userPasswordKey Name of key in existing secret to use for PostgreSQL credentials (overrides `auth.secretKeys.userPasswordKey`). Only used when `global.postgresql.auth.existingSecret` is set. - ## @param global.postgresql.auth.secretKeys.replicationPasswordKey Name of key in existing secret to use for PostgreSQL credentials (overrides `auth.secretKeys.replicationPasswordKey`). Only used when `global.postgresql.auth.existingSecret` is set. - ## - auth: - postgresPassword: "" - username: "" - password: "" - database: "" - existingSecret: "" - secretKeys: - adminPasswordKey: "" - userPasswordKey: "" - replicationPasswordKey: "" - ## @param global.postgresql.service.ports.postgresql PostgreSQL service port (overrides `service.ports.postgresql`) - ## - service: - ports: - postgresql: "" - -## @section Common parameters -## - -## @param kubeVersion Override Kubernetes version -## -kubeVersion: "" -## @param nameOverride String to partially override common.names.fullname template (will maintain the release name) -## -nameOverride: "" -## @param fullnameOverride String to fully override common.names.fullname template -## -fullnameOverride: "" -## @param clusterDomain Kubernetes Cluster Domain -## -clusterDomain: cluster.local -## @param extraDeploy Array of extra objects to deploy with the release (evaluated as a template) -## -extraDeploy: [] -## @param commonLabels Add labels to all the deployed resources -## -commonLabels: {} -## @param commonAnnotations Add annotations to all the deployed resources -## -commonAnnotations: {} -## Enable diagnostic mode in the statefulset -## -diagnosticMode: - ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden) - ## - enabled: false - ## @param diagnosticMode.command Command to override all containers in the statefulset - ## - command: - - sleep - ## @param diagnosticMode.args Args to override all containers in the statefulset - ## - args: - - infinity - -## @section PostgreSQL common parameters -## - -## Bitnami PostgreSQL image version -## ref: https://hub.docker.com/r/bitnami/postgresql/tags/ -## @param image.registry PostgreSQL image registry -## @param image.repository PostgreSQL image repository -## @param image.tag PostgreSQL image tag (immutable tags are recommended) -## @param image.digest PostgreSQL image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag -## @param image.pullPolicy PostgreSQL image pull policy -## @param image.pullSecrets Specify image pull secrets -## @param image.debug Specify if debug values should be set -## -image: - registry: docker.io - repository: bitnamilegacy/postgresql - tag: 14.5.0-debian-11-r35 - digest: "" - ## Specify a imagePullPolicy - ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' - ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images - ## - 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/ - ## Example: - ## pullSecrets: - ## - myRegistryKeySecretName - ## - pullSecrets: [] - ## Set to true if you would like to see extra information on logs - ## - debug: false -## Authentication parameters -## ref: https://github.com/bitnami/containers/tree/main/bitnami/postgresql#setting-the-root-password-on-first-run -## ref: https://github.com/bitnami/containers/tree/main/bitnami/postgresql#creating-a-database-on-first-run -## ref: https://github.com/bitnami/containers/tree/main/bitnami/postgresql#creating-a-database-user-on-first-run -## -auth: - ## @param auth.enablePostgresUser Assign a password to the "postgres" admin user. Otherwise, remote access will be blocked for this user - ## - enablePostgresUser: true - ## @param auth.postgresPassword Password for the "postgres" admin user. Ignored if `auth.existingSecret` with key `postgres-password` is provided - ## - postgresPassword: "" - ## @param auth.username Name for a custom user to create - ## - username: "" - ## @param auth.password Password for the custom user to create. Ignored if `auth.existingSecret` with key `password` is provided - ## - password: "" - ## @param auth.database Name for a custom database to create - ## - database: "" - ## @param auth.replicationUsername Name of the replication user - ## - replicationUsername: repl_user - ## @param auth.replicationPassword Password for the replication user. Ignored if `auth.existingSecret` with key `replication-password` is provided - ## - replicationPassword: "" - ## @param auth.existingSecret Name of existing secret to use for PostgreSQL credentials. `auth.postgresPassword`, `auth.password`, and `auth.replicationPassword` will be ignored and picked up from this secret. The secret might also contains the key `ldap-password` if LDAP is enabled. `ldap.bind_password` will be ignored and picked from this secret in this case. - ## - existingSecret: "" - ## @param auth.secretKeys.adminPasswordKey Name of key in existing secret to use for PostgreSQL credentials. Only used when `auth.existingSecret` is set. - ## @param auth.secretKeys.userPasswordKey Name of key in existing secret to use for PostgreSQL credentials. Only used when `auth.existingSecret` is set. - ## @param auth.secretKeys.replicationPasswordKey Name of key in existing secret to use for PostgreSQL credentials. Only used when `auth.existingSecret` is set. - ## - secretKeys: - adminPasswordKey: postgres-password - userPasswordKey: password - replicationPasswordKey: replication-password - ## @param auth.usePasswordFiles Mount credentials as a files instead of using an environment variable - ## - usePasswordFiles: false -## @param architecture PostgreSQL architecture (`standalone` or `replication`) -## -architecture: standalone -## Replication configuration -## Ignored if `architecture` is `standalone` -## -replication: - ## @param replication.synchronousCommit Set synchronous commit mode. Allowed values: `on`, `remote_apply`, `remote_write`, `local` and `off` - ## @param replication.numSynchronousReplicas Number of replicas that will have synchronous replication. Note: Cannot be greater than `readReplicas.replicaCount`. - ## ref: https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT - ## - synchronousCommit: "off" - numSynchronousReplicas: 0 - ## @param replication.applicationName Cluster application name. Useful for advanced replication settings - ## - applicationName: my_application -## @param containerPorts.postgresql PostgreSQL container port -## -containerPorts: - postgresql: 5432 -## Audit settings -## https://github.com/bitnami/containers/tree/main/bitnami/postgresql#auditing -## @param audit.logHostname Log client hostnames -## @param audit.logConnections Add client log-in operations to the log file -## @param audit.logDisconnections Add client log-outs operations to the log file -## @param audit.pgAuditLog Add operations to log using the pgAudit extension -## @param audit.pgAuditLogCatalog Log catalog using pgAudit -## @param audit.clientMinMessages Message log level to share with the user -## @param audit.logLinePrefix Template for log line prefix (default if not set) -## @param audit.logTimezone Timezone for the log timestamps -## -audit: - logHostname: false - logConnections: false - logDisconnections: false - pgAuditLog: "" - pgAuditLogCatalog: "off" - clientMinMessages: error - logLinePrefix: "" - logTimezone: "" -## LDAP configuration -## @param ldap.enabled Enable LDAP support -## DEPRECATED ldap.url It will removed in a future, please use 'ldap.uri' instead -## @param ldap.server IP address or name of the LDAP server. -## @param ldap.port Port number on the LDAP server to connect to -## @param ldap.prefix String to prepend to the user name when forming the DN to bind -## @param ldap.suffix String to append to the user name when forming the DN to bind -## DEPRECATED ldap.baseDN It will removed in a future, please use 'ldap.basedn' instead -## DEPRECATED ldap.bindDN It will removed in a future, please use 'ldap.binddn' instead -## DEPRECATED ldap.bind_password It will removed in a future, please use 'ldap.bindpw' instead -## @param ldap.basedn Root DN to begin the search for the user in -## @param ldap.binddn DN of user to bind to LDAP -## @param ldap.bindpw Password for the user to bind to LDAP -## DEPRECATED ldap.search_attr It will removed in a future, please use 'ldap.searchAttribute' instead -## DEPRECATED ldap.search_filter It will removed in a future, please use 'ldap.searchFilter' instead -## @param ldap.searchAttribute Attribute to match against the user name in the search -## @param ldap.searchFilter The search filter to use when doing search+bind authentication -## @param ldap.scheme Set to `ldaps` to use LDAPS -## DEPRECATED ldap.tls as string is deprecated,please use 'ldap.tls.enabled' instead -## @param ldap.tls.enabled Se to true to enable TLS encryption -## -ldap: - enabled: false - server: "" - port: "" - prefix: "" - suffix: "" - basedn: "" - binddn: "" - bindpw: "" - searchAttribute: "" - searchFilter: "" - scheme: "" - tls: - enabled: false - ## @param ldap.uri LDAP URL beginning in the form `ldap[s]://host[:port]/basedn`. If provided, all the other LDAP parameters will be ignored. - ## Ref: https://www.postgresql.org/docs/current/auth-ldap.html - uri: "" -## @param postgresqlDataDir PostgreSQL data dir folder -## -postgresqlDataDir: /bitnami/postgresql/data -## @param postgresqlSharedPreloadLibraries Shared preload libraries (comma-separated list) -## -postgresqlSharedPreloadLibraries: "pgaudit" -## Start PostgreSQL pod(s) without limitations on shm memory. -## By default docker and containerd (and possibly other container runtimes) limit `/dev/shm` to `64M` -## ref: https://github.com/docker-library/postgres/issues/416 -## ref: https://github.com/containerd/containerd/issues/3654 -## -shmVolume: - ## @param shmVolume.enabled Enable emptyDir volume for /dev/shm for PostgreSQL pod(s) - ## - enabled: true - ## @param shmVolume.sizeLimit Set this to enable a size limit on the shm tmpfs - ## Note: the size of the tmpfs counts against container's memory limit - ## e.g: - ## sizeLimit: 1Gi - ## - sizeLimit: "" -## TLS configuration -## -tls: - ## @param tls.enabled Enable TLS traffic support - ## - enabled: false - ## @param tls.autoGenerated Generate automatically self-signed TLS certificates - ## - autoGenerated: false - ## @param tls.preferServerCiphers Whether to use the server's TLS cipher preferences rather than the client's - ## - preferServerCiphers: true - ## @param tls.certificatesSecret Name of an existing secret that contains the certificates - ## - certificatesSecret: "" - ## @param tls.certFilename Certificate filename - ## - certFilename: "" - ## @param tls.certKeyFilename Certificate key filename - ## - certKeyFilename: "" - ## @param tls.certCAFilename CA Certificate filename - ## If provided, PostgreSQL will authenticate TLS/SSL clients by requesting them a certificate - ## ref: https://www.postgresql.org/docs/9.6/auth-methods.html - ## - certCAFilename: "" - ## @param tls.crlFilename File containing a Certificate Revocation List - ## - crlFilename: "" - -## @section PostgreSQL Primary parameters -## -primary: - ## @param primary.name Name of the primary database (eg primary, master, leader, ...) - ## - name: primary - ## @param primary.configuration PostgreSQL Primary main configuration to be injected as ConfigMap - ## ref: https://www.postgresql.org/docs/current/static/runtime-config.html - ## - configuration: "" - ## @param primary.pgHbaConfiguration PostgreSQL Primary client authentication configuration - ## ref: https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html - ## e.g:# - ## pgHbaConfiguration: |- - ## local all all trust - ## host all all localhost trust - ## host mydatabase mysuser 192.168.0.0/24 md5 - ## - pgHbaConfiguration: "" - ## @param primary.existingConfigmap Name of an existing ConfigMap with PostgreSQL Primary configuration - ## NOTE: `primary.configuration` and `primary.pgHbaConfiguration` will be ignored - ## - existingConfigmap: "" - ## @param primary.extendedConfiguration Extended PostgreSQL Primary configuration (appended to main or default configuration) - ## ref: https://github.com/bitnami/containers/tree/main/bitnami/postgresql#allow-settings-to-be-loaded-from-files-other-than-the-default-postgresqlconf - ## - extendedConfiguration: "" - ## @param primary.existingExtendedConfigmap Name of an existing ConfigMap with PostgreSQL Primary extended configuration - ## NOTE: `primary.extendedConfiguration` will be ignored - ## - existingExtendedConfigmap: "" - ## Initdb configuration - ## ref: https://github.com/bitnami/containers/tree/main/bitnami/postgresql#specifying-initdb-arguments - ## - initdb: - ## @param primary.initdb.args PostgreSQL initdb extra arguments - ## - args: "" - ## @param primary.initdb.postgresqlWalDir Specify a custom location for the PostgreSQL transaction log - ## - postgresqlWalDir: "" - ## @param primary.initdb.scripts Dictionary of initdb scripts - ## Specify dictionary of scripts to be run at first boot - ## e.g: - ## scripts: - ## my_init_script.sh: | - ## #!/bin/sh - ## echo "Do something." - ## - scripts: {} - ## @param primary.initdb.scriptsConfigMap ConfigMap with scripts to be run at first boot - ## NOTE: This will override `primary.initdb.scripts` - ## - scriptsConfigMap: "" - ## @param primary.initdb.scriptsSecret Secret with scripts to be run at first boot (in case it contains sensitive information) - ## NOTE: This can work along `primary.initdb.scripts` or `primary.initdb.scriptsConfigMap` - ## - scriptsSecret: "" - ## @param primary.initdb.user Specify the PostgreSQL username to execute the initdb scripts - ## - user: "" - ## @param primary.initdb.password Specify the PostgreSQL password to execute the initdb scripts - ## - password: "" - ## Configure current cluster's primary server to be the standby server in other cluster. - ## This will allow cross cluster replication and provide cross cluster high availability. - ## You will need to configure pgHbaConfiguration if you want to enable this feature with local cluster replication enabled. - ## @param primary.standby.enabled Whether to enable current cluster's primary as standby server of another cluster or not - ## @param primary.standby.primaryHost The Host of replication primary in the other cluster - ## @param primary.standby.primaryPort The Port of replication primary in the other cluster - ## - standby: - enabled: false - primaryHost: "" - primaryPort: "" - ## @param primary.extraEnvVars Array with extra environment variables to add to PostgreSQL Primary nodes - ## e.g: - ## extraEnvVars: - ## - name: FOO - ## value: "bar" - ## - extraEnvVars: [] - ## @param primary.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for PostgreSQL Primary nodes - ## - extraEnvVarsCM: "" - ## @param primary.extraEnvVarsSecret Name of existing Secret containing extra env vars for PostgreSQL Primary nodes - ## - extraEnvVarsSecret: "" - ## @param primary.command Override default container command (useful when using custom images) - ## - command: [] - ## @param primary.args Override default container args (useful when using custom images) - ## - args: [] - ## Configure extra options for PostgreSQL Primary containers' liveness, readiness and startup probes - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes - ## @param primary.livenessProbe.enabled Enable livenessProbe on PostgreSQL Primary containers - ## @param primary.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe - ## @param primary.livenessProbe.periodSeconds Period seconds for livenessProbe - ## @param primary.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe - ## @param primary.livenessProbe.failureThreshold Failure threshold for livenessProbe - ## @param primary.livenessProbe.successThreshold Success threshold for livenessProbe - ## - livenessProbe: - enabled: true - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 6 - successThreshold: 1 - ## @param primary.readinessProbe.enabled Enable readinessProbe on PostgreSQL Primary containers - ## @param primary.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe - ## @param primary.readinessProbe.periodSeconds Period seconds for readinessProbe - ## @param primary.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe - ## @param primary.readinessProbe.failureThreshold Failure threshold for readinessProbe - ## @param primary.readinessProbe.successThreshold Success threshold for readinessProbe - ## - readinessProbe: - enabled: true - initialDelaySeconds: 5 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 6 - successThreshold: 1 - ## @param primary.startupProbe.enabled Enable startupProbe on PostgreSQL Primary containers - ## @param primary.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe - ## @param primary.startupProbe.periodSeconds Period seconds for startupProbe - ## @param primary.startupProbe.timeoutSeconds Timeout seconds for startupProbe - ## @param primary.startupProbe.failureThreshold Failure threshold for startupProbe - ## @param primary.startupProbe.successThreshold Success threshold for startupProbe - ## - startupProbe: - enabled: false - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 1 - failureThreshold: 15 - successThreshold: 1 - ## @param primary.customLivenessProbe Custom livenessProbe that overrides the default one - ## - customLivenessProbe: {} - ## @param primary.customReadinessProbe Custom readinessProbe that overrides the default one - ## - customReadinessProbe: {} - ## @param primary.customStartupProbe Custom startupProbe that overrides the default one - ## - customStartupProbe: {} - ## @param primary.lifecycleHooks for the PostgreSQL Primary container to automate configuration before or after startup - ## - lifecycleHooks: {} - ## PostgreSQL Primary resource requests and limits - ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ - ## @param primary.resources.limits The resources limits for the PostgreSQL Primary containers - ## @param primary.resources.requests.memory The requested memory for the PostgreSQL Primary containers - ## @param primary.resources.requests.cpu The requested cpu for the PostgreSQL Primary containers - ## - resources: - limits: {} - requests: - memory: 256Mi - cpu: 250m - ## Pod Security Context - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ - ## @param primary.podSecurityContext.enabled Enable security context - ## @param primary.podSecurityContext.fsGroup Group ID for the pod - ## - podSecurityContext: - enabled: true - fsGroup: 1001 - ## Container Security Context - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ - ## @param primary.containerSecurityContext.enabled Enable container security context - ## @param primary.containerSecurityContext.runAsUser User ID for the container - ## - containerSecurityContext: - enabled: true - runAsUser: 1001 - ## @param primary.hostAliases PostgreSQL primary pods host aliases - ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ - ## - hostAliases: [] - ## @param primary.hostNetwork Specify if host network should be enabled for PostgreSQL pod (postgresql primary) - ## - hostNetwork: false - ## @param primary.hostIPC Specify if host IPC should be enabled for PostgreSQL pod (postgresql primary) - ## - hostIPC: false - ## @param primary.labels Map of labels to add to the statefulset (postgresql primary) - ## - labels: {} - ## @param primary.annotations Annotations for PostgreSQL primary pods - ## - annotations: {} - ## @param primary.podLabels Map of labels to add to the pods (postgresql primary) - ## - podLabels: {} - ## @param primary.podAnnotations Map of annotations to add to the pods (postgresql primary) - ## - podAnnotations: {} - ## @param primary.podAffinityPreset PostgreSQL primary pod affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` - ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity - ## - podAffinityPreset: "" - ## @param primary.podAntiAffinityPreset PostgreSQL primary pod anti-affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` - ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity - ## - podAntiAffinityPreset: soft - ## PostgreSQL Primary node affinity preset - ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity - ## - nodeAffinityPreset: - ## @param primary.nodeAffinityPreset.type PostgreSQL primary node affinity preset type. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` - ## - type: "" - ## @param primary.nodeAffinityPreset.key PostgreSQL primary node label key to match Ignored if `primary.affinity` is set. - ## E.g. - ## key: "kubernetes.io/e2e-az-name" - ## - key: "" - ## @param primary.nodeAffinityPreset.values PostgreSQL primary node label values to match. Ignored if `primary.affinity` is set. - ## E.g. - ## values: - ## - e2e-az1 - ## - e2e-az2 - ## - values: [] - ## @param primary.affinity Affinity for PostgreSQL primary pods assignment - ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity - ## Note: primary.podAffinityPreset, primary.podAntiAffinityPreset, and primary.nodeAffinityPreset will be ignored when it's set - ## - affinity: {} - ## @param primary.nodeSelector Node labels for PostgreSQL primary pods assignment - ## ref: https://kubernetes.io/docs/user-guide/node-selection/ - ## - nodeSelector: {} - ## @param primary.tolerations Tolerations for PostgreSQL primary pods assignment - ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ - ## - tolerations: [] - ## @param primary.topologySpreadConstraints Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template - ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods - ## - topologySpreadConstraints: [] - ## @param primary.priorityClassName Priority Class to use for each pod (postgresql primary) - ## - priorityClassName: "" - ## @param primary.schedulerName Use an alternate scheduler, e.g. "stork". - ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ - ## - schedulerName: "" - ## @param primary.terminationGracePeriodSeconds Seconds PostgreSQL primary pod needs to terminate gracefully - ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods - ## - terminationGracePeriodSeconds: "" - ## @param primary.updateStrategy.type PostgreSQL Primary statefulset strategy type - ## @param primary.updateStrategy.rollingUpdate PostgreSQL Primary statefulset rolling update configuration parameters - ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies - ## - updateStrategy: - type: RollingUpdate - rollingUpdate: {} - ## @param primary.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the PostgreSQL Primary container(s) - ## - extraVolumeMounts: [] - ## @param primary.extraVolumes Optionally specify extra list of additional volumes for the PostgreSQL Primary pod(s) - ## - extraVolumes: [] - ## @param primary.sidecars Add additional sidecar containers to the PostgreSQL Primary pod(s) - ## For example: - ## sidecars: - ## - name: your-image-name - ## image: your-image - ## imagePullPolicy: Always - ## ports: - ## - name: portname - ## containerPort: 1234 - ## - sidecars: [] - ## @param primary.initContainers Add additional init containers to the PostgreSQL Primary pod(s) - ## Example - ## - ## initContainers: - ## - name: do-something - ## image: busybox - ## command: ['do', 'something'] - ## - initContainers: [] - ## @param primary.extraPodSpec Optionally specify extra PodSpec for the PostgreSQL Primary pod(s) - ## - extraPodSpec: {} - ## PostgreSQL Primary service configuration - ## - service: - ## @param primary.service.type Kubernetes Service type - ## - type: ClusterIP - ## @param primary.service.ports.postgresql PostgreSQL service port - ## - ports: - postgresql: 5432 - ## Node ports to expose - ## NOTE: choose port between <30000-32767> - ## @param primary.service.nodePorts.postgresql Node port for PostgreSQL - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - ## - nodePorts: - postgresql: "" - ## @param primary.service.clusterIP Static clusterIP or None for headless services - ## e.g: - ## clusterIP: None - ## - clusterIP: "" - ## @param primary.service.annotations Annotations for PostgreSQL primary service - ## - annotations: {} - ## @param primary.service.loadBalancerIP Load balancer IP if service type is `LoadBalancer` - ## Set the LoadBalancer service type to internal only - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer - ## - loadBalancerIP: "" - ## @param primary.service.externalTrafficPolicy Enable client source IP preservation - ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip - ## - externalTrafficPolicy: Cluster - ## @param primary.service.loadBalancerSourceRanges Addresses that are allowed when service is LoadBalancer - ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service - ## - ## loadBalancerSourceRanges: - ## - 10.10.10.0/24 - ## - loadBalancerSourceRanges: [] - ## @param primary.service.extraPorts Extra ports to expose in the PostgreSQL primary service - ## - extraPorts: [] - ## @param primary.service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP" - ## If "ClientIP", consecutive client requests will be directed to the same Pod - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - ## - sessionAffinity: None - ## @param primary.service.sessionAffinityConfig Additional settings for the sessionAffinity - ## sessionAffinityConfig: - ## clientIP: - ## timeoutSeconds: 300 - ## - sessionAffinityConfig: {} - ## PostgreSQL Primary persistence configuration - ## - persistence: - ## @param primary.persistence.enabled Enable PostgreSQL Primary data persistence using PVC - ## - enabled: true - ## @param primary.persistence.existingClaim Name of an existing PVC to use - ## - existingClaim: "" - ## @param primary.persistence.mountPath The path the volume will be mounted at - ## Note: useful when using custom PostgreSQL images - ## - mountPath: /bitnami/postgresql - ## @param primary.persistence.subPath The subdirectory of the volume to mount to - ## Useful in dev environments and one PV for multiple services - ## - subPath: "" - ## @param primary.persistence.storageClass PVC Storage Class for PostgreSQL Primary data volume - ## 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) - ## - storageClass: "" - ## @param primary.persistence.accessModes PVC Access Mode for PostgreSQL volume - ## - accessModes: - - ReadWriteOnce - ## @param primary.persistence.size PVC Storage Request for PostgreSQL volume - ## - size: 8Gi - ## @param primary.persistence.annotations Annotations for the PVC - ## - annotations: {} - ## @param primary.persistence.labels Labels for the PVC - ## - labels: {} - ## @param primary.persistence.selector Selector to match an existing Persistent Volume (this value is evaluated as a template) - ## selector: - ## matchLabels: - ## app: my-app - ## - selector: {} - ## @param primary.persistence.dataSource Custom PVC data source - ## - dataSource: {} - -## @section PostgreSQL read only replica parameters (only used when `architecture` is set to `replication`) -## -readReplicas: - ## @param readReplicas.name Name of the read replicas database (eg secondary, slave, ...) - ## - name: read - ## @param readReplicas.replicaCount Number of PostgreSQL read only replicas - ## - replicaCount: 1 - ## @param readReplicas.extendedConfiguration Extended PostgreSQL read only replicas configuration (appended to main or default configuration) - ## ref: https://github.com/bitnami/containers/tree/main/bitnami/postgresql#allow-settings-to-be-loaded-from-files-other-than-the-default-postgresqlconf - ## - extendedConfiguration: "" - ## @param readReplicas.extraEnvVars Array with extra environment variables to add to PostgreSQL read only nodes - ## e.g: - ## extraEnvVars: - ## - name: FOO - ## value: "bar" - ## - extraEnvVars: [] - ## @param readReplicas.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for PostgreSQL read only nodes - ## - extraEnvVarsCM: "" - ## @param readReplicas.extraEnvVarsSecret Name of existing Secret containing extra env vars for PostgreSQL read only nodes - ## - extraEnvVarsSecret: "" - ## @param readReplicas.command Override default container command (useful when using custom images) - ## - command: [] - ## @param readReplicas.args Override default container args (useful when using custom images) - ## - args: [] - ## Configure extra options for PostgreSQL read only containers' liveness, readiness and startup probes - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes - ## @param readReplicas.livenessProbe.enabled Enable livenessProbe on PostgreSQL read only containers - ## @param readReplicas.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe - ## @param readReplicas.livenessProbe.periodSeconds Period seconds for livenessProbe - ## @param readReplicas.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe - ## @param readReplicas.livenessProbe.failureThreshold Failure threshold for livenessProbe - ## @param readReplicas.livenessProbe.successThreshold Success threshold for livenessProbe - ## - livenessProbe: - enabled: true - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 6 - successThreshold: 1 - ## @param readReplicas.readinessProbe.enabled Enable readinessProbe on PostgreSQL read only containers - ## @param readReplicas.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe - ## @param readReplicas.readinessProbe.periodSeconds Period seconds for readinessProbe - ## @param readReplicas.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe - ## @param readReplicas.readinessProbe.failureThreshold Failure threshold for readinessProbe - ## @param readReplicas.readinessProbe.successThreshold Success threshold for readinessProbe - ## - readinessProbe: - enabled: true - initialDelaySeconds: 5 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 6 - successThreshold: 1 - ## @param readReplicas.startupProbe.enabled Enable startupProbe on PostgreSQL read only containers - ## @param readReplicas.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe - ## @param readReplicas.startupProbe.periodSeconds Period seconds for startupProbe - ## @param readReplicas.startupProbe.timeoutSeconds Timeout seconds for startupProbe - ## @param readReplicas.startupProbe.failureThreshold Failure threshold for startupProbe - ## @param readReplicas.startupProbe.successThreshold Success threshold for startupProbe - ## - startupProbe: - enabled: false - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 1 - failureThreshold: 15 - successThreshold: 1 - ## @param readReplicas.customLivenessProbe Custom livenessProbe that overrides the default one - ## - customLivenessProbe: {} - ## @param readReplicas.customReadinessProbe Custom readinessProbe that overrides the default one - ## - customReadinessProbe: {} - ## @param readReplicas.customStartupProbe Custom startupProbe that overrides the default one - ## - customStartupProbe: {} - ## @param readReplicas.lifecycleHooks for the PostgreSQL read only container to automate configuration before or after startup - ## - lifecycleHooks: {} - ## PostgreSQL read only resource requests and limits - ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ - ## @param readReplicas.resources.limits The resources limits for the PostgreSQL read only containers - ## @param readReplicas.resources.requests.memory The requested memory for the PostgreSQL read only containers - ## @param readReplicas.resources.requests.cpu The requested cpu for the PostgreSQL read only containers - ## - resources: - limits: {} - requests: - memory: 256Mi - cpu: 250m - ## Pod Security Context - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ - ## @param readReplicas.podSecurityContext.enabled Enable security context - ## @param readReplicas.podSecurityContext.fsGroup Group ID for the pod - ## - podSecurityContext: - enabled: true - fsGroup: 1001 - ## Container Security Context - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ - ## @param readReplicas.containerSecurityContext.enabled Enable container security context - ## @param readReplicas.containerSecurityContext.runAsUser User ID for the container - ## - containerSecurityContext: - enabled: true - runAsUser: 1001 - ## @param readReplicas.hostAliases PostgreSQL read only pods host aliases - ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ - ## - hostAliases: [] - ## @param readReplicas.hostNetwork Specify if host network should be enabled for PostgreSQL pod (PostgreSQL read only) - ## - hostNetwork: false - ## @param readReplicas.hostIPC Specify if host IPC should be enabled for PostgreSQL pod (postgresql primary) - ## - hostIPC: false - ## @param readReplicas.labels Map of labels to add to the statefulset (PostgreSQL read only) - ## - labels: {} - ## @param readReplicas.annotations Annotations for PostgreSQL read only pods - ## - annotations: {} - ## @param readReplicas.podLabels Map of labels to add to the pods (PostgreSQL read only) - ## - podLabels: {} - ## @param readReplicas.podAnnotations Map of annotations to add to the pods (PostgreSQL read only) - ## - podAnnotations: {} - ## @param readReplicas.podAffinityPreset PostgreSQL read only pod affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` - ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity - ## - podAffinityPreset: "" - ## @param readReplicas.podAntiAffinityPreset PostgreSQL read only pod anti-affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` - ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity - ## - podAntiAffinityPreset: soft - ## PostgreSQL read only node affinity preset - ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity - ## - nodeAffinityPreset: - ## @param readReplicas.nodeAffinityPreset.type PostgreSQL read only node affinity preset type. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` - ## - type: "" - ## @param readReplicas.nodeAffinityPreset.key PostgreSQL read only node label key to match Ignored if `primary.affinity` is set. - ## E.g. - ## key: "kubernetes.io/e2e-az-name" - ## - key: "" - ## @param readReplicas.nodeAffinityPreset.values PostgreSQL read only node label values to match. Ignored if `primary.affinity` is set. - ## E.g. - ## values: - ## - e2e-az1 - ## - e2e-az2 - ## - values: [] - ## @param readReplicas.affinity Affinity for PostgreSQL read only pods assignment - ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity - ## Note: primary.podAffinityPreset, primary.podAntiAffinityPreset, and primary.nodeAffinityPreset will be ignored when it's set - ## - affinity: {} - ## @param readReplicas.nodeSelector Node labels for PostgreSQL read only pods assignment - ## ref: https://kubernetes.io/docs/user-guide/node-selection/ - ## - nodeSelector: {} - ## @param readReplicas.tolerations Tolerations for PostgreSQL read only pods assignment - ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ - ## - tolerations: [] - ## @param readReplicas.topologySpreadConstraints Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template - ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods - ## - topologySpreadConstraints: [] - ## @param readReplicas.priorityClassName Priority Class to use for each pod (PostgreSQL read only) - ## - priorityClassName: "" - ## @param readReplicas.schedulerName Use an alternate scheduler, e.g. "stork". - ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ - ## - schedulerName: "" - ## @param readReplicas.terminationGracePeriodSeconds Seconds PostgreSQL read only pod needs to terminate gracefully - ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods - ## - terminationGracePeriodSeconds: "" - ## @param readReplicas.updateStrategy.type PostgreSQL read only statefulset strategy type - ## @param readReplicas.updateStrategy.rollingUpdate PostgreSQL read only statefulset rolling update configuration parameters - ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies - ## - updateStrategy: - type: RollingUpdate - rollingUpdate: {} - ## @param readReplicas.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the PostgreSQL read only container(s) - ## - extraVolumeMounts: [] - ## @param readReplicas.extraVolumes Optionally specify extra list of additional volumes for the PostgreSQL read only pod(s) - ## - extraVolumes: [] - ## @param readReplicas.sidecars Add additional sidecar containers to the PostgreSQL read only pod(s) - ## For example: - ## sidecars: - ## - name: your-image-name - ## image: your-image - ## imagePullPolicy: Always - ## ports: - ## - name: portname - ## containerPort: 1234 - ## - sidecars: [] - ## @param readReplicas.initContainers Add additional init containers to the PostgreSQL read only pod(s) - ## Example - ## - ## initContainers: - ## - name: do-something - ## image: busybox - ## command: ['do', 'something'] - ## - initContainers: [] - ## @param readReplicas.extraPodSpec Optionally specify extra PodSpec for the PostgreSQL read only pod(s) - ## - extraPodSpec: {} - ## PostgreSQL read only service configuration - ## - service: - ## @param readReplicas.service.type Kubernetes Service type - ## - type: ClusterIP - ## @param readReplicas.service.ports.postgresql PostgreSQL service port - ## - ports: - postgresql: 5432 - ## Node ports to expose - ## NOTE: choose port between <30000-32767> - ## @param readReplicas.service.nodePorts.postgresql Node port for PostgreSQL - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - ## - nodePorts: - postgresql: "" - ## @param readReplicas.service.clusterIP Static clusterIP or None for headless services - ## e.g: - ## clusterIP: None - ## - clusterIP: "" - ## @param readReplicas.service.annotations Annotations for PostgreSQL read only service - ## - annotations: {} - ## @param readReplicas.service.loadBalancerIP Load balancer IP if service type is `LoadBalancer` - ## Set the LoadBalancer service type to internal only - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer - ## - loadBalancerIP: "" - ## @param readReplicas.service.externalTrafficPolicy Enable client source IP preservation - ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip - ## - externalTrafficPolicy: Cluster - ## @param readReplicas.service.loadBalancerSourceRanges Addresses that are allowed when service is LoadBalancer - ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service - ## - ## loadBalancerSourceRanges: - ## - 10.10.10.0/24 - ## - loadBalancerSourceRanges: [] - ## @param readReplicas.service.extraPorts Extra ports to expose in the PostgreSQL read only service - ## - extraPorts: [] - ## @param readReplicas.service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP" - ## If "ClientIP", consecutive client requests will be directed to the same Pod - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - ## - sessionAffinity: None - ## @param readReplicas.service.sessionAffinityConfig Additional settings for the sessionAffinity - ## sessionAffinityConfig: - ## clientIP: - ## timeoutSeconds: 300 - ## - sessionAffinityConfig: {} - ## PostgreSQL read only persistence configuration - ## - persistence: - ## @param readReplicas.persistence.enabled Enable PostgreSQL read only data persistence using PVC - ## - enabled: true - ## @param readReplicas.persistence.existingClaim Name of an existing PVC to use - ## - existingClaim: "" - ## @param readReplicas.persistence.mountPath The path the volume will be mounted at - ## Note: useful when using custom PostgreSQL images - ## - mountPath: /bitnami/postgresql - ## @param readReplicas.persistence.subPath The subdirectory of the volume to mount to - ## Useful in dev environments and one PV for multiple services - ## - subPath: "" - ## @param readReplicas.persistence.storageClass PVC Storage Class for PostgreSQL read only data volume - ## 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) - ## - storageClass: "" - ## @param readReplicas.persistence.accessModes PVC Access Mode for PostgreSQL volume - ## - accessModes: - - ReadWriteOnce - ## @param readReplicas.persistence.size PVC Storage Request for PostgreSQL volume - ## - size: 8Gi - ## @param readReplicas.persistence.annotations Annotations for the PVC - ## - annotations: {} - ## @param readReplicas.persistence.labels Labels for the PVC - ## - labels: {} - ## @param readReplicas.persistence.selector Selector to match an existing Persistent Volume (this value is evaluated as a template) - ## selector: - ## matchLabels: - ## app: my-app - ## - selector: {} - ## @param readReplicas.persistence.dataSource Custom PVC data source - ## - dataSource: {} - -## @section NetworkPolicy parameters - -## Add networkpolicies -## -networkPolicy: - ## @param networkPolicy.enabled Enable network policies - ## - enabled: false - ## @param networkPolicy.metrics.enabled Enable network policies for metrics (prometheus) - ## @param networkPolicy.metrics.namespaceSelector [object] Monitoring namespace selector labels. These labels will be used to identify the prometheus' namespace. - ## @param networkPolicy.metrics.podSelector [object] Monitoring pod selector labels. These labels will be used to identify the Prometheus pods. - ## - metrics: - enabled: false - ## e.g: - ## namespaceSelector: - ## label: monitoring - ## - namespaceSelector: {} - ## e.g: - ## podSelector: - ## label: monitoring - ## - podSelector: {} - ## Ingress Rules - ## - ingressRules: - ## @param networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled Enable ingress rule that makes PostgreSQL primary node only accessible from a particular origin. - ## @param networkPolicy.ingressRules.primaryAccessOnlyFrom.namespaceSelector [object] Namespace selector label that is allowed to access the PostgreSQL primary node. This label will be used to identified the allowed namespace(s). - ## @param networkPolicy.ingressRules.primaryAccessOnlyFrom.podSelector [object] Pods selector label that is allowed to access the PostgreSQL primary node. This label will be used to identified the allowed pod(s). - ## @param networkPolicy.ingressRules.primaryAccessOnlyFrom.customRules [object] Custom network policy for the PostgreSQL primary node. - ## - primaryAccessOnlyFrom: - enabled: false - ## e.g: - ## namespaceSelector: - ## label: ingress - ## - namespaceSelector: {} - ## e.g: - ## podSelector: - ## label: access - ## - podSelector: {} - ## custom ingress rules - ## e.g: - ## customRules: - ## - from: - ## - namespaceSelector: - ## matchLabels: - ## label: example - customRules: {} - ## @param networkPolicy.ingressRules.readReplicasAccessOnlyFrom.enabled Enable ingress rule that makes PostgreSQL read-only nodes only accessible from a particular origin. - ## @param networkPolicy.ingressRules.readReplicasAccessOnlyFrom.namespaceSelector [object] Namespace selector label that is allowed to access the PostgreSQL read-only nodes. This label will be used to identified the allowed namespace(s). - ## @param networkPolicy.ingressRules.readReplicasAccessOnlyFrom.podSelector [object] Pods selector label that is allowed to access the PostgreSQL read-only nodes. This label will be used to identified the allowed pod(s). - ## @param networkPolicy.ingressRules.readReplicasAccessOnlyFrom.customRules [object] Custom network policy for the PostgreSQL read-only nodes. - ## - readReplicasAccessOnlyFrom: - enabled: false - ## e.g: - ## namespaceSelector: - ## label: ingress - ## - namespaceSelector: {} - ## e.g: - ## podSelector: - ## label: access - ## - podSelector: {} - ## custom ingress rules - ## e.g: - ## CustomRules: - ## - from: - ## - namespaceSelector: - ## matchLabels: - ## label: example - customRules: {} - ## @param networkPolicy.egressRules.denyConnectionsToExternal Enable egress rule that denies outgoing traffic outside the cluster, except for DNS (port 53). - ## @param networkPolicy.egressRules.customRules [object] Custom network policy rule - ## - egressRules: - # Deny connections to external. This is not compatible with an external database. - denyConnectionsToExternal: false - ## Additional custom egress rules - ## e.g: - ## customRules: - ## - to: - ## - namespaceSelector: - ## matchLabels: - ## label: example - customRules: {} - -## @section Volume Permissions parameters - -## Init containers parameters: -## volumePermissions: Change the owner and group of the persistent volume(s) mountpoint(s) to 'runAsUser:fsGroup' on each node -## -volumePermissions: - ## @param volumePermissions.enabled Enable init container that changes the owner and group of the persistent volume - ## - enabled: false - ## @param volumePermissions.image.registry Init container volume-permissions image registry - ## @param volumePermissions.image.repository Init container volume-permissions image repository - ## @param volumePermissions.image.tag Init container volume-permissions image tag (immutable tags are recommended) - ## @param volumePermissions.image.digest Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag - ## @param volumePermissions.image.pullPolicy Init container volume-permissions image pull policy - ## @param volumePermissions.image.pullSecrets Init container volume-permissions image pull secrets - ## - image: - registry: docker.io - repository: bitnamilegacy/bitnami-shell - tag: 11-debian-11-r45 - digest: "" - 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/ - ## Example: - ## pullSecrets: - ## - myRegistryKeySecretName - ## - pullSecrets: [] - ## Init container resource requests and limits - ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ - ## @param volumePermissions.resources.limits Init container volume-permissions resource limits - ## @param volumePermissions.resources.requests Init container volume-permissions resource requests - ## - resources: - limits: {} - requests: {} - ## Init container' Security Context - ## Note: the chown of the data folder is done to containerSecurityContext.runAsUser - ## and not the below volumePermissions.containerSecurityContext.runAsUser - ## @param volumePermissions.containerSecurityContext.runAsUser User ID for the init container - ## - containerSecurityContext: - runAsUser: 0 - -## @section Other Parameters - -## Service account for PostgreSQL to use. -## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ -## -serviceAccount: - ## @param serviceAccount.create Enable creation of ServiceAccount for PostgreSQL pod - ## - create: false - ## @param serviceAccount.name The name of the ServiceAccount to use. - ## If not set and create is true, a name is generated using the common.names.fullname template - ## - name: "" - ## @param serviceAccount.automountServiceAccountToken Allows auto mount of ServiceAccountToken on the serviceAccount created - ## Can be set to false if pods using this serviceAccount do not need to use K8s API - ## - automountServiceAccountToken: true - ## @param serviceAccount.annotations Additional custom annotations for the ServiceAccount - ## - annotations: {} -## Creates role for ServiceAccount -## @param rbac.create Create Role and RoleBinding (required for PSP to work) -## -rbac: - create: false - ## @param rbac.rules Custom RBAC rules to set - ## e.g: - ## rules: - ## - apiGroups: - ## - "" - ## resources: - ## - pods - ## verbs: - ## - get - ## - list - ## - rules: [] -## Pod Security Policy -## ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/ -## @param psp.create Whether to create a PodSecurityPolicy. WARNING: PodSecurityPolicy is deprecated in Kubernetes v1.21 or later, unavailable in v1.25 or later -## -psp: - create: false - -## @section Metrics Parameters - -metrics: - ## @param metrics.enabled Start a prometheus exporter - ## - enabled: false - ## @param metrics.image.registry PostgreSQL Prometheus Exporter image registry - ## @param metrics.image.repository PostgreSQL Prometheus Exporter image repository - ## @param metrics.image.tag PostgreSQL Prometheus Exporter image tag (immutable tags are recommended) - ## @param metrics.image.digest PostgreSQL image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag - ## @param metrics.image.pullPolicy PostgreSQL Prometheus Exporter image pull policy - ## @param metrics.image.pullSecrets Specify image pull secrets - ## - image: - registry: docker.io - repository: bitnamilegacy/postgres-exporter - tag: 0.11.1-debian-11-r22 - digest: "" - 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/ - ## Example: - ## pullSecrets: - ## - myRegistryKeySecretName - ## - pullSecrets: [] - ## @param metrics.customMetrics Define additional custom metrics - ## ref: https://github.com/wrouesnel/postgres_exporter#adding-new-metrics-via-a-config-file - ## customMetrics: - ## pg_database: - ## query: "SELECT d.datname AS name, CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT') THEN pg_catalog.pg_database_size(d.datname) ELSE 0 END AS size_bytes FROM pg_catalog.pg_database d where datname not in ('template0', 'template1', 'postgres')" - ## metrics: - ## - name: - ## usage: "LABEL" - ## description: "Name of the database" - ## - size_bytes: - ## usage: "GAUGE" - ## description: "Size of the database in bytes" - ## - customMetrics: {} - ## @param metrics.extraEnvVars Extra environment variables to add to PostgreSQL Prometheus exporter - ## see: https://github.com/wrouesnel/postgres_exporter#environment-variables - ## For example: - ## extraEnvVars: - ## - name: PG_EXPORTER_DISABLE_DEFAULT_METRICS - ## value: "true" - ## - extraEnvVars: [] - ## PostgreSQL Prometheus exporter containers' Security Context - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container - ## @param metrics.containerSecurityContext.enabled Enable PostgreSQL Prometheus exporter containers' Security Context - ## @param metrics.containerSecurityContext.runAsUser Set PostgreSQL Prometheus exporter containers' Security Context runAsUser - ## @param metrics.containerSecurityContext.runAsNonRoot Set PostgreSQL Prometheus exporter containers' Security Context runAsNonRoot - ## - containerSecurityContext: - enabled: true - runAsUser: 1001 - runAsNonRoot: true - ## Configure extra options for PostgreSQL Prometheus exporter containers' liveness, readiness and startup probes - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes - ## @param metrics.livenessProbe.enabled Enable livenessProbe on PostgreSQL Prometheus exporter containers - ## @param metrics.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe - ## @param metrics.livenessProbe.periodSeconds Period seconds for livenessProbe - ## @param metrics.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe - ## @param metrics.livenessProbe.failureThreshold Failure threshold for livenessProbe - ## @param metrics.livenessProbe.successThreshold Success threshold for livenessProbe - ## - livenessProbe: - enabled: true - initialDelaySeconds: 5 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 6 - successThreshold: 1 - ## @param metrics.readinessProbe.enabled Enable readinessProbe on PostgreSQL Prometheus exporter containers - ## @param metrics.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe - ## @param metrics.readinessProbe.periodSeconds Period seconds for readinessProbe - ## @param metrics.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe - ## @param metrics.readinessProbe.failureThreshold Failure threshold for readinessProbe - ## @param metrics.readinessProbe.successThreshold Success threshold for readinessProbe - ## - readinessProbe: - enabled: true - initialDelaySeconds: 5 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 6 - successThreshold: 1 - ## @param metrics.startupProbe.enabled Enable startupProbe on PostgreSQL Prometheus exporter containers - ## @param metrics.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe - ## @param metrics.startupProbe.periodSeconds Period seconds for startupProbe - ## @param metrics.startupProbe.timeoutSeconds Timeout seconds for startupProbe - ## @param metrics.startupProbe.failureThreshold Failure threshold for startupProbe - ## @param metrics.startupProbe.successThreshold Success threshold for startupProbe - ## - startupProbe: - enabled: false - initialDelaySeconds: 10 - periodSeconds: 10 - timeoutSeconds: 1 - failureThreshold: 15 - successThreshold: 1 - ## @param metrics.customLivenessProbe Custom livenessProbe that overrides the default one - ## - customLivenessProbe: {} - ## @param metrics.customReadinessProbe Custom readinessProbe that overrides the default one - ## - customReadinessProbe: {} - ## @param metrics.customStartupProbe Custom startupProbe that overrides the default one - ## - customStartupProbe: {} - ## @param metrics.containerPorts.metrics PostgreSQL Prometheus exporter metrics container port - ## - containerPorts: - metrics: 9187 - ## PostgreSQL Prometheus exporter resource requests and limits - ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ - ## @param metrics.resources.limits The resources limits for the PostgreSQL Prometheus exporter container - ## @param metrics.resources.requests The requested resources for the PostgreSQL Prometheus exporter container - ## - resources: - limits: {} - requests: {} - ## Service configuration - ## - service: - ## @param metrics.service.ports.metrics PostgreSQL Prometheus Exporter service port - ## - ports: - metrics: 9187 - ## @param metrics.service.clusterIP Static clusterIP or None for headless services - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#choosing-your-own-ip-address - ## - clusterIP: "" - ## @param metrics.service.sessionAffinity Control where client requests go, to the same pod or round-robin - ## Values: ClientIP or None - ## ref: https://kubernetes.io/docs/user-guide/services/ - ## - sessionAffinity: None - ## @param metrics.service.annotations [object] Annotations for Prometheus to auto-discover the metrics endpoint - ## - annotations: - prometheus.io/scrape: "true" - prometheus.io/port: "{{ .Values.metrics.service.ports.metrics }}" - ## Prometheus Operator ServiceMonitor configuration - ## - serviceMonitor: - ## @param metrics.serviceMonitor.enabled Create ServiceMonitor Resource for scraping metrics using Prometheus Operator - ## - enabled: false - ## @param metrics.serviceMonitor.namespace Namespace for the ServiceMonitor Resource (defaults to the Release Namespace) - ## - namespace: "" - ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped. - ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint - ## - interval: "" - ## @param metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended - ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint - ## - scrapeTimeout: "" - ## @param metrics.serviceMonitor.labels Additional labels that can be used so ServiceMonitor will be discovered by Prometheus - ## - labels: {} - ## @param metrics.serviceMonitor.selector Prometheus instance selector labels - ## ref: https://github.com/bitnami/charts/tree/main/bitnami/prometheus-operator#prometheus-configuration - ## - selector: {} - ## @param metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping - ## - relabelings: [] - ## @param metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion - ## - metricRelabelings: [] - ## @param metrics.serviceMonitor.honorLabels Specify honorLabels parameter to add the scrape endpoint - ## - honorLabels: false - ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus. - ## - jobLabel: "" - ## Custom PrometheusRule to be defined - ## The value is evaluated as a template, so, for example, the value can depend on .Release or .Chart - ## ref: https://github.com/coreos/prometheus-operator#customresourcedefinitions - ## - prometheusRule: - ## @param metrics.prometheusRule.enabled Create a PrometheusRule for Prometheus Operator - ## - enabled: false - ## @param metrics.prometheusRule.namespace Namespace for the PrometheusRule Resource (defaults to the Release Namespace) - ## - namespace: "" - ## @param metrics.prometheusRule.labels Additional labels that can be used so PrometheusRule will be discovered by Prometheus - ## - labels: {} - ## @param metrics.prometheusRule.rules PrometheusRule definitions - ## Make sure to constraint the rules to the current postgresql service. - ## rules: - ## - alert: HugeReplicationLag - ## expr: pg_replication_lag{service="{{ printf "%s-metrics" (include "common.names.fullname" .) }}"} / 3600 > 1 - ## for: 1m - ## labels: - ## severity: critical - ## annotations: - ## description: replication for {{ include "common.names.fullname" . }} PostgreSQL is lagging by {{ "{{ $value }}" }} hour(s). - ## summary: PostgreSQL replication is lagging by {{ "{{ $value }}" }} hour(s). - ## - rules: [] diff --git a/manifests/helm/kong/2.46.0/crds/custom-resource-definitions.yaml b/manifests/helm/kong/2.46.0/crds/custom-resource-definitions.yaml deleted file mode 100644 index 28bc3f2..0000000 --- a/manifests/helm/kong/2.46.0/crds/custom-resource-definitions.yaml +++ /dev/null @@ -1,2974 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: ingressclassparameterses.configuration.konghq.com -spec: - group: configuration.konghq.com - names: - kind: IngressClassParameters - listKind: IngressClassParametersList - plural: ingressclassparameterses - singular: ingressclassparameters - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: IngressClassParameters is the Schema for the IngressClassParameters - 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: Spec is the IngressClassParameters specification. - properties: - enableLegacyRegexDetection: - default: false - description: |- - EnableLegacyRegexDetection automatically detects if ImplementationSpecific Ingress paths are regular expression - paths using the legacy 2.x heuristic. The controller adds the "~" prefix to those paths if the Kong version is - 3.0 or higher. - type: boolean - serviceUpstream: - default: false - description: Offload load-balancing to kube-proxy or sidecar. - type: boolean - type: object - type: object - served: true - storage: true ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: kongclusterplugins.configuration.konghq.com -spec: - group: configuration.konghq.com - names: - categories: - - kong-ingress-controller - kind: KongClusterPlugin - listKind: KongClusterPluginList - plural: kongclusterplugins - shortNames: - - kcp - singular: kongclusterplugin - scope: Cluster - versions: - - additionalPrinterColumns: - - description: Name of the plugin - jsonPath: .plugin - name: Plugin-Type - type: string - - description: Age - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - description: Indicates if the plugin is disabled - jsonPath: .disabled - name: Disabled - priority: 1 - type: boolean - - description: Configuration of the plugin - jsonPath: .config - name: Config - priority: 1 - type: string - - jsonPath: .status.conditions[?(@.type=="Programmed")].status - name: Programmed - type: string - name: v1 - schema: - openAPIV3Schema: - description: KongClusterPlugin is the Schema for the kongclusterplugins 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 - config: - description: |- - Config contains the plugin configuration. It's a list of keys and values - required to configure the plugin. - Please read the documentation of the plugin being configured to set values - in here. For any plugin in Kong, anything that goes in the `config` JSON - key in the Admin API request, goes into this property. - Only one of `config` or `configFrom` may be used in a KongClusterPlugin, not both at once. - type: object - x-kubernetes-preserve-unknown-fields: true - configFrom: - description: |- - ConfigFrom references a secret containing the plugin configuration. - This should be used when the plugin configuration contains sensitive information, - such as AWS credentials in the Lambda plugin or the client secret in the OIDC plugin. - Only one of `config` or `configFrom` may be used in a KongClusterPlugin, not both at once. - properties: - secretKeyRef: - description: Specifies a name, a namespace, and a key of a secret - to refer to. - properties: - key: - description: The key containing the value. - type: string - name: - description: The secret containing the key. - type: string - namespace: - description: The namespace containing the secret. - type: string - required: - - key - - name - - namespace - type: object - required: - - secretKeyRef - type: object - configPatches: - description: |- - ConfigPatches represents JSON patches to the configuration of the plugin. - Each item means a JSON patch to add something in the configuration, - where path is specified in `path` and value is in `valueFrom` referencing - a key in a secret. - When Config is specified, patches will be applied to the configuration in Config. - Otherwise, patches will be applied to an empty object. - items: - description: |- - NamespacedConfigPatch is a JSON patch to add values from secrets to KongClusterPlugin - to the generated configuration of plugin in Kong. - properties: - path: - description: Path is the JSON path to add the patch. - type: string - valueFrom: - description: ValueFrom is the reference to a key of a secret where - the patched value comes from. - properties: - secretKeyRef: - description: Specifies a name, a namespace, and a key of a secret - to refer to. - properties: - key: - description: The key containing the value. - type: string - name: - description: The secret containing the key. - type: string - namespace: - description: The namespace containing the secret. - type: string - required: - - key - - name - - namespace - type: object - required: - - secretKeyRef - type: object - required: - - path - - valueFrom - type: object - type: array - consumerRef: - description: ConsumerRef is a reference to a particular consumer. - type: string - disabled: - description: Disabled set if the plugin is disabled or not. - type: boolean - instance_name: - description: |- - InstanceName is an optional custom name to identify an instance of the plugin. This is useful when running the - same plugin in multiple contexts, for example, on multiple services. - 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 - ordering: - description: |- - Ordering overrides the normal plugin execution order. It's only available on Kong Enterprise. - `` is a request processing phase (for example, `access` or `body_filter`) and - `` is the name of the plugin that will run before or after the KongPlugin. - For example, a KongPlugin with `plugin: rate-limiting` and `before.access: ["key-auth"]` - will create a rate limiting plugin that limits requests _before_ they are authenticated. - properties: - after: - additionalProperties: - items: - type: string - type: array - description: PluginOrderingPhase indicates which plugins in a phase - should affect the target plugin's order - type: object - before: - additionalProperties: - items: - type: string - type: array - description: PluginOrderingPhase indicates which plugins in a phase - should affect the target plugin's order - type: object - type: object - plugin: - description: PluginName is the name of the plugin to which to apply the - config. - type: string - protocols: - description: |- - Protocols configures plugin to run on requests received on specific - protocols. - items: - description: |- - KongProtocol is a valid Kong protocol. - This alias is necessary to deal with https://github.com/kubernetes-sigs/controller-tools/issues/342 - enum: - - http - - https - - grpc - - grpcs - - tcp - - tls - - udp - type: string - type: array - run_on: - description: |- - RunOn configures the plugin to run on the first or the second or both - nodes in case of a service mesh deployment. - enum: - - first - - second - - all - type: string - status: - description: Status represents the current status of the KongClusterPlugin - resource. - properties: - conditions: - default: - - lastTransitionTime: "1970-01-01T00:00:00Z" - message: Waiting for controller - reason: Pending - status: Unknown - type: Programmed - description: |- - Conditions describe the current conditions of the KongClusterPluginStatus. - - Known condition types are: - - * "Programmed" - items: - description: Condition contains details for one aspect of the current - state of this API Resource. - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - maxItems: 8 - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - type: object - required: - - plugin - type: object - x-kubernetes-validations: - - message: Using both config and configFrom fields is not allowed. - rule: '!(has(self.config) && has(self.configFrom))' - - message: Using both configFrom and configPatches fields is not allowed. - rule: '!(has(self.configFrom) && has(self.configPatches))' - - message: The plugin field is immutable - rule: self.plugin == oldSelf.plugin - served: true - storage: true - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: kongconsumergroups.configuration.konghq.com -spec: - group: configuration.konghq.com - names: - categories: - - kong-ingress-controller - kind: KongConsumerGroup - listKind: KongConsumerGroupList - plural: kongconsumergroups - shortNames: - - kcg - singular: kongconsumergroup - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Age - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - jsonPath: .status.conditions[?(@.type=="Programmed")].status - name: Programmed - type: string - name: v1beta1 - schema: - openAPIV3Schema: - description: KongConsumerGroup is the Schema for the kongconsumergroups 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: Status represents the current status of the KongConsumerGroup - resource. - properties: - conditions: - default: - - lastTransitionTime: "1970-01-01T00:00:00Z" - message: Waiting for controller - reason: Pending - status: Unknown - type: Programmed - description: |- - Conditions describe the current conditions of the KongConsumerGroup. - - Known condition types are: - - * "Programmed" - items: - description: Condition contains details for one aspect of the current - state of this API Resource. - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - maxItems: 8 - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - type: object - type: object - served: true - storage: true - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: kongconsumers.configuration.konghq.com -spec: - group: configuration.konghq.com - names: - categories: - - kong-ingress-controller - kind: KongConsumer - listKind: KongConsumerList - plural: kongconsumers - shortNames: - - kc - singular: kongconsumer - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Username of a Kong Consumer - jsonPath: .username - name: Username - type: string - - description: Age - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - jsonPath: .status.conditions[?(@.type=="Programmed")].status - name: Programmed - type: string - name: v1 - schema: - openAPIV3Schema: - description: KongConsumer is the Schema for the kongconsumers 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 - consumerGroups: - description: |- - ConsumerGroups are references to consumer groups (that consumer wants to be part of) - provisioned in Kong. - items: - type: string - type: array - x-kubernetes-list-type: set - credentials: - description: |- - Credentials are references to secrets containing a credential to be - provisioned in Kong. - items: - type: string - type: array - x-kubernetes-list-type: set - custom_id: - description: |- - CustomID is a Kong cluster-unique existing ID for the consumer - useful for mapping - Kong with users in your existing database. - 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: Status represents the current status of the KongConsumer - resource. - properties: - conditions: - default: - - lastTransitionTime: "1970-01-01T00:00:00Z" - message: Waiting for controller - reason: Pending - status: Unknown - type: Programmed - description: |- - Conditions describe the current conditions of the KongConsumer. - - Known condition types are: - - * "Programmed" - items: - description: Condition contains details for one aspect of the current - state of this API Resource. - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - maxItems: 8 - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - type: object - username: - description: Username is a Kong cluster-unique username of the consumer. - type: string - type: object - x-kubernetes-validations: - - message: Need to provide either username or custom_id - rule: has(self.username) || has(self.custom_id) - served: true - storage: true - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: kongcustomentities.configuration.konghq.com -spec: - group: configuration.konghq.com - names: - categories: - - kong-ingress-controller - kind: KongCustomEntity - listKind: KongCustomEntityList - plural: kongcustomentities - shortNames: - - kce - singular: kongcustomentity - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: type of the Kong entity - jsonPath: .spec.type - name: Entity Type - type: string - - description: Age - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - jsonPath: .status.conditions[?(@.type=="Programmed")].status - name: Programmed - type: string - name: v1alpha1 - schema: - openAPIV3Schema: - description: KongCustomEntity defines a "custom" Kong entity that KIC cannot - support the entity type directly. - 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: - controllerName: - description: ControllerName specifies the controller that should reconcile - it, like ingress class. - type: string - fields: - description: Fields defines the fields of the Kong entity itself. - x-kubernetes-preserve-unknown-fields: true - parentRef: - description: |- - ParentRef references the kubernetes resource it attached to when its scope is "attached". - Currently only KongPlugin/KongClusterPlugin allowed. This will make the custom entity to be attached - to the entity(service/route/consumer) where the plugin is attached. - properties: - group: - type: string - kind: - type: string - name: - type: string - namespace: - description: Empty namespace means the same namespace of the owning - object. - type: string - required: - - name - type: object - type: - description: EntityType is the type of the Kong entity. The type is - used in generating declarative configuration. - type: string - required: - - controllerName - - fields - - type - type: object - status: - description: Status stores the reconciling status of the resource. - properties: - conditions: - default: - - lastTransitionTime: "1970-01-01T00:00:00Z" - message: Waiting for controller - reason: Pending - status: Unknown - type: Programmed - description: |- - Conditions describe the current conditions of the KongCustomEntityStatus. - - Known condition types are: - - * "Programmed" - items: - description: Condition contains details for one aspect of the current - state of this API Resource. - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - maxItems: 8 - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - required: - - conditions - type: object - required: - - spec - type: object - x-kubernetes-validations: - - message: The spec.type field is immutable - rule: self.spec.type == oldSelf.spec.type - - message: The spec.type field cannot be known Kong entity types - rule: '!(self.spec.type in [''services'',''routes'',''upstreams'',''targets'',''plugins'',''consumers'',''consumer_groups''])' - served: true - storage: true - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: kongingresses.configuration.konghq.com -spec: - group: configuration.konghq.com - names: - categories: - - kong-ingress-controller - kind: KongIngress - listKind: KongIngressList - plural: kongingresses - shortNames: - - ki - singular: kongingress - scope: Namespaced - versions: - - name: v1 - schema: - openAPIV3Schema: - description: KongIngress is the Schema for the kongingresses 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 - proxy: - description: |- - Proxy defines additional connection options for the routes to be configured in the - Kong Gateway, e.g. `connection_timeout`, `retries`, etc. - properties: - connect_timeout: - description: "The timeout in milliseconds for\testablishing a connection - to the upstream server.\nDeprecated: use Service's \"konghq.com/connect-timeout\" - annotation instead." - minimum: 0 - type: integer - path: - description: |- - (optional) The path to be used in requests to the upstream server. - Deprecated: use Service's "konghq.com/path" annotation instead. - pattern: ^/.*$ - type: string - protocol: - description: |- - The protocol used to communicate with the upstream. - Deprecated: use Service's "konghq.com/protocol" annotation instead. - enum: - - http - - https - - grpc - - grpcs - - tcp - - tls - - udp - type: string - read_timeout: - description: |- - The timeout in milliseconds between two successive read operations - for transmitting a request to the upstream server. - Deprecated: use Service's "konghq.com/read-timeout" annotation instead. - minimum: 0 - type: integer - retries: - description: |- - The number of retries to execute upon failure to proxy. - Deprecated: use Service's "konghq.com/retries" annotation instead. - minimum: 0 - type: integer - write_timeout: - description: |- - The timeout in milliseconds between two successive write operations - for transmitting a request to the upstream server. - Deprecated: use Service's "konghq.com/write-timeout" annotation instead. - minimum: 0 - type: integer - type: object - route: - description: |- - Route define rules to match client requests. - Each Route is associated with a Service, - and a Service may have multiple Routes associated to it. - properties: - headers: - additionalProperties: - items: - type: string - type: array - description: |- - Headers contains one or more lists of values indexed by header name - that will cause this Route to match if present in the request. - The Host header cannot be used with this attribute. - Deprecated: use Ingress' "konghq.com/headers" annotation instead. - type: object - https_redirect_status_code: - description: |- - HTTPSRedirectStatusCode is the status code Kong responds with - when all properties of a Route match except the protocol. - Deprecated: use Ingress' "ingress.kubernetes.io/force-ssl-redirect" or - "konghq.com/https-redirect-status-code" annotations instead. - type: integer - methods: - description: |- - Methods is a list of HTTP methods that match this Route. - Deprecated: use Ingress' "konghq.com/methods" annotation instead. - items: - type: string - type: array - path_handling: - description: |- - PathHandling controls how the Service path, Route path and requested path - are combined when sending a request to the upstream. - Deprecated: use Ingress' "konghq.com/path-handling" annotation instead. - enum: - - v0 - - v1 - type: string - preserve_host: - description: |- - PreserveHost sets When matching a Route via one of the hosts domain names, - use the request Host header in the upstream request headers. - If set to false, the upstream Host header will be that of the Service’s host. - Deprecated: use Ingress' "konghq.com/preserve-host" annotation instead. - type: boolean - protocols: - description: |- - Protocols is an array of the protocols this Route should allow. - Deprecated: use Ingress' "konghq.com/protocols" annotation instead. - items: - description: |- - KongProtocol is a valid Kong protocol. - This alias is necessary to deal with https://github.com/kubernetes-sigs/controller-tools/issues/342 - enum: - - http - - https - - grpc - - grpcs - - tcp - - tls - - udp - type: string - type: array - regex_priority: - description: |- - RegexPriority is a number used to choose which route resolves a given request - when several routes match it using regexes simultaneously. - Deprecated: use Ingress' "konghq.com/regex-priority" annotation instead. - type: integer - request_buffering: - description: |- - RequestBuffering sets whether to enable request body buffering or not. - Deprecated: use Ingress' "konghq.com/request-buffering" annotation instead. - type: boolean - response_buffering: - description: |- - ResponseBuffering sets whether to enable response body buffering or not. - Deprecated: use Ingress' "konghq.com/response-buffering" annotation instead. - type: boolean - snis: - description: |- - SNIs is a list of SNIs that match this Route when using stream routing. - Deprecated: use Ingress' "konghq.com/snis" annotation instead. - items: - type: string - type: array - strip_path: - description: |- - StripPath sets When matching a Route via one of the paths - strip the matching prefix from the upstream request URL. - Deprecated: use Ingress' "konghq.com/strip-path" annotation instead. - type: boolean - type: object - upstream: - description: |- - Upstream represents a virtual hostname and can be used to loadbalance - incoming requests over multiple targets (e.g. Kubernetes `Services` can - be a target, OR `Endpoints` can be targets). - properties: - algorithm: - description: |- - Algorithm is the load balancing algorithm to use. - Accepted values are: "round-robin", "consistent-hashing", "least-connections", "latency". - enum: - - round-robin - - consistent-hashing - - least-connections - - latency - type: string - hash_fallback: - description: |- - HashFallback defines What to use as hashing input - if the primary hash_on does not return a hash. - Accepted values are: "none", "consumer", "ip", "header", "cookie". - type: string - hash_fallback_header: - description: |- - HashFallbackHeader is the header name to take the value from as hash input. - Only required when "hash_fallback" is set to "header". - type: string - hash_fallback_query_arg: - description: HashFallbackQueryArg is the "hash_fallback" version of - HashOnQueryArg. - type: string - hash_fallback_uri_capture: - description: HashFallbackURICapture is the "hash_fallback" version - of HashOnURICapture. - type: string - hash_on: - description: |- - HashOn defines what to use as hashing input. - Accepted values are: "none", "consumer", "ip", "header", "cookie", "path", "query_arg", "uri_capture". - type: string - hash_on_cookie: - description: |- - The cookie name to take the value from as hash input. - Only required when "hash_on" or "hash_fallback" is set to "cookie". - type: string - hash_on_cookie_path: - description: |- - The cookie path to set in the response headers. - Only required when "hash_on" or "hash_fallback" is set to "cookie". - type: string - hash_on_header: - description: |- - HashOnHeader defines the header name to take the value from as hash input. - Only required when "hash_on" is set to "header". - type: string - hash_on_query_arg: - description: HashOnQueryArg is the query string parameter whose value - is the hash input when "hash_on" is set to "query_arg". - type: string - hash_on_uri_capture: - description: |- - HashOnURICapture is the name of the capture group whose value is the hash input when "hash_on" is set to - "uri_capture". - type: string - healthchecks: - description: Healthchecks defines the health check configurations - in Kong. - properties: - active: - description: ActiveHealthcheck configures active health check - probing. - properties: - concurrency: - minimum: 1 - type: integer - headers: - additionalProperties: - items: - type: string - type: array - type: object - healthy: - description: |- - Healthy configures thresholds and HTTP status codes - to mark targets healthy for an upstream. - properties: - http_statuses: - items: - type: integer - type: array - interval: - minimum: 0 - type: integer - successes: - minimum: 0 - type: integer - type: object - http_path: - pattern: ^/.*$ - type: string - https_sni: - type: string - https_verify_certificate: - type: boolean - timeout: - minimum: 0 - type: integer - type: - type: string - unhealthy: - description: |- - Unhealthy configures thresholds and HTTP status codes - to mark targets unhealthy. - properties: - http_failures: - minimum: 0 - type: integer - http_statuses: - items: - type: integer - type: array - interval: - minimum: 0 - type: integer - tcp_failures: - minimum: 0 - type: integer - timeouts: - minimum: 0 - type: integer - type: object - type: object - passive: - description: |- - PassiveHealthcheck configures passive checks around - passive health checks. - properties: - healthy: - description: |- - Healthy configures thresholds and HTTP status codes - to mark targets healthy for an upstream. - properties: - http_statuses: - items: - type: integer - type: array - interval: - minimum: 0 - type: integer - successes: - minimum: 0 - type: integer - type: object - type: - type: string - unhealthy: - description: |- - Unhealthy configures thresholds and HTTP status codes - to mark targets unhealthy. - properties: - http_failures: - minimum: 0 - type: integer - http_statuses: - items: - type: integer - type: array - interval: - minimum: 0 - type: integer - tcp_failures: - minimum: 0 - type: integer - timeouts: - minimum: 0 - type: integer - type: object - type: object - threshold: - type: number - type: object - host_header: - description: |- - HostHeader is The hostname to be used as Host header - when proxying requests through Kong. - type: string - slots: - description: Slots is the number of slots in the load balancer algorithm. - minimum: 10 - type: integer - type: object - type: object - x-kubernetes-validations: - - message: '''proxy'' field is no longer supported, use Service''s annotations - instead' - rule: '!has(self.proxy)' - - message: '''route'' field is no longer supported, use Ingress'' annotations - instead' - rule: '!has(self.route)' - served: true - storage: true - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: konglicenses.configuration.konghq.com -spec: - group: configuration.konghq.com - names: - categories: - - kong-ingress-controller - kind: KongLicense - listKind: KongLicenseList - plural: konglicenses - shortNames: - - kl - singular: konglicense - scope: Cluster - versions: - - additionalPrinterColumns: - - description: Age - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - description: Enabled to configure on Kong gateway instances - jsonPath: .enabled - name: Enabled - type: boolean - name: v1alpha1 - schema: - openAPIV3Schema: - description: KongLicense stores a Kong enterprise license to apply to managed - Kong gateway instances. - 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 - enabled: - default: true - description: |- - Enabled is set to true to let controllers (like KIC or KGO) to reconcile it. - Default value is true to apply the license by default. - type: boolean - 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 - rawLicenseString: - description: RawLicenseString is a string with the raw content of the - license. - type: string - status: - description: Status is the status of the KongLicense being processed by - controllers. - properties: - controllers: - items: - description: |- - KongLicenseControllerStatus is the status of owning KongLicense being processed - identified by the controllerName field. - properties: - conditions: - default: - - lastTransitionTime: "1970-01-01T00:00:00Z" - message: Waiting for controller - reason: Pending - status: Unknown - type: Programmed - description: Conditions describe the current conditions of the - KongLicense on the controller. - items: - description: Condition contains details for one aspect of - the current state of this API Resource. - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, - Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - maxItems: 8 - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - controllerName: - description: |- - ControllerName is an identifier of the controller to reconcile this KongLicense. - Should be unique in the list of controller statuses. - type: string - controllerRef: - description: |- - ControllerRef is the reference of the controller to reconcile this KongLicense. - It is usually the name of (KIC/KGO) pod that reconciles it. - properties: - group: - description: |- - Group is the group of referent. - It should be empty if the referent is in "core" group (like pod). - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - description: |- - Kind is the kind of the referent. - By default the nil kind means kind Pod. - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the referent. - It should be empty if the referent is cluster scoped. - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - required: - - name - type: object - required: - - controllerName - type: object - type: array - x-kubernetes-list-map-keys: - - controllerName - x-kubernetes-list-type: map - type: object - required: - - enabled - - rawLicenseString - type: object - served: true - storage: true - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: kongplugins.configuration.konghq.com -spec: - group: configuration.konghq.com - names: - categories: - - kong-ingress-controller - kind: KongPlugin - listKind: KongPluginList - plural: kongplugins - shortNames: - - kp - singular: kongplugin - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Name of the plugin - jsonPath: .plugin - name: Plugin-Type - type: string - - description: Age - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - description: Indicates if the plugin is disabled - jsonPath: .disabled - name: Disabled - priority: 1 - type: boolean - - description: Configuration of the plugin - jsonPath: .config - name: Config - priority: 1 - type: string - - jsonPath: .status.conditions[?(@.type=="Programmed")].status - name: Programmed - type: string - name: v1 - schema: - openAPIV3Schema: - description: KongPlugin is the Schema for the kongplugins 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 - config: - description: |- - Config contains the plugin configuration. It's a list of keys and values - required to configure the plugin. - Please read the documentation of the plugin being configured to set values - in here. For any plugin in Kong, anything that goes in the `config` JSON - key in the Admin API request, goes into this property. - Only one of `config` or `configFrom` may be used in a KongPlugin, not both at once. - type: object - x-kubernetes-preserve-unknown-fields: true - configFrom: - description: |- - ConfigFrom references a secret containing the plugin configuration. - This should be used when the plugin configuration contains sensitive information, - such as AWS credentials in the Lambda plugin or the client secret in the OIDC plugin. - Only one of `config` or `configFrom` may be used in a KongPlugin, not both at once. - properties: - secretKeyRef: - description: Specifies a name and a key of a secret to refer to. The - namespace is implicitly set to the one of referring object. - properties: - key: - description: The key containing the value. - type: string - name: - description: The secret containing the key. - type: string - required: - - key - - name - type: object - required: - - secretKeyRef - type: object - configPatches: - description: |- - ConfigPatches represents JSON patches to the configuration of the plugin. - Each item means a JSON patch to add something in the configuration, - where path is specified in `path` and value is in `valueFrom` referencing - a key in a secret. - When Config is specified, patches will be applied to the configuration in Config. - Otherwise, patches will be applied to an empty object. - items: - description: |- - ConfigPatch is a JSON patch (RFC6902) to add values from Secret to the generated configuration. - It is an equivalent of the following patch: - `{"op": "add", "path": {.Path}, "value": {.ComputedValueFrom}}`. - properties: - path: - description: Path is the JSON-Pointer value (RFC6901) that references - a location within the target configuration. - type: string - valueFrom: - description: ValueFrom is the reference to a key of a secret where - the patched value comes from. - properties: - secretKeyRef: - description: Specifies a name and a key of a secret to refer - to. The namespace is implicitly set to the one of referring - object. - properties: - key: - description: The key containing the value. - type: string - name: - description: The secret containing the key. - type: string - required: - - key - - name - type: object - required: - - secretKeyRef - type: object - required: - - path - - valueFrom - type: object - type: array - consumerRef: - description: ConsumerRef is a reference to a particular consumer. - type: string - disabled: - description: Disabled set if the plugin is disabled or not. - type: boolean - instance_name: - description: |- - InstanceName is an optional custom name to identify an instance of the plugin. This is useful when running the - same plugin in multiple contexts, for example, on multiple services. - 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 - ordering: - description: |- - Ordering overrides the normal plugin execution order. It's only available on Kong Enterprise. - `` is a request processing phase (for example, `access` or `body_filter`) and - `` is the name of the plugin that will run before or after the KongPlugin. - For example, a KongPlugin with `plugin: rate-limiting` and `before.access: ["key-auth"]` - will create a rate limiting plugin that limits requests _before_ they are authenticated. - properties: - after: - additionalProperties: - items: - type: string - type: array - description: PluginOrderingPhase indicates which plugins in a phase - should affect the target plugin's order - type: object - before: - additionalProperties: - items: - type: string - type: array - description: PluginOrderingPhase indicates which plugins in a phase - should affect the target plugin's order - type: object - type: object - plugin: - description: PluginName is the name of the plugin to which to apply the - config. - type: string - protocols: - description: |- - Protocols configures plugin to run on requests received on specific - protocols. - items: - description: |- - KongProtocol is a valid Kong protocol. - This alias is necessary to deal with https://github.com/kubernetes-sigs/controller-tools/issues/342 - enum: - - http - - https - - grpc - - grpcs - - tcp - - tls - - udp - type: string - type: array - run_on: - description: |- - RunOn configures the plugin to run on the first or the second or both - nodes in case of a service mesh deployment. - enum: - - first - - second - - all - type: string - status: - description: Status represents the current status of the KongPlugin resource. - properties: - conditions: - default: - - lastTransitionTime: "1970-01-01T00:00:00Z" - message: Waiting for controller - reason: Pending - status: Unknown - type: Programmed - description: |- - Conditions describe the current conditions of the KongPluginStatus. - - Known condition types are: - - * "Programmed" - items: - description: Condition contains details for one aspect of the current - state of this API Resource. - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - maxItems: 8 - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - type: object - required: - - plugin - type: object - x-kubernetes-validations: - - message: Using both config and configFrom fields is not allowed. - rule: '!(has(self.config) && has(self.configFrom))' - - message: Using both configFrom and configPatches fields is not allowed. - rule: '!(has(self.configFrom) && has(self.configPatches))' - - message: The plugin field is immutable - rule: self.plugin == oldSelf.plugin - served: true - storage: true - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - labels: - gateway.networking.k8s.io/policy: direct - name: kongupstreampolicies.configuration.konghq.com -spec: - group: configuration.konghq.com - names: - categories: - - kong-ingress-controller - kind: KongUpstreamPolicy - listKind: KongUpstreamPolicyList - plural: kongupstreampolicies - shortNames: - - kup - singular: kongupstreampolicy - scope: Namespaced - versions: - - name: v1beta1 - schema: - openAPIV3Schema: - description: |- - KongUpstreamPolicy allows configuring algorithm that should be used for load balancing traffic between Kong - Upstream's Targets. It also allows configuring health checks for Kong Upstream's Targets. - - Its configuration is similar to Kong Upstream object (https://docs.konghq.com/gateway/latest/admin-api/#upstream-object), - and it is applied to Kong Upstream objects created by the controller. - - It can be attached to Services. To attach it to a Service, it has to be annotated with - `konghq.com/upstream-policy: `, where `` is the name of the KongUpstreamPolicy - object in the same namespace as the Service. - - When attached to a Service, it will affect all Kong Upstreams created for the Service. - - When attached to a Service used in a Gateway API *Route rule with multiple BackendRefs, all of its Services MUST - be configured with the same KongUpstreamPolicy. Otherwise, the controller will *ignore* the KongUpstreamPolicy. - - Note: KongUpstreamPolicy doesn't implement Gateway API's GEP-713 strictly. - In particular, it doesn't use the TargetRef for attaching to Services and Gateway API *Routes - annotations are - used instead. This is to allow reusing the same KongUpstreamPolicy for multiple Services and Gateway API *Routes. - properties: - apiVersion: - description: |- - APIVersion defines the versioned schema of this representation of an object. - Servers should convert recognized schemas to the latest internal value, and - may reject unrecognized values. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - type: string - kind: - description: |- - Kind is a string value representing the REST resource this object represents. - Servers may infer this from the endpoint the client submits requests to. - Cannot be updated. - In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - metadata: - type: object - spec: - description: Spec contains the configuration of the Kong upstream. - properties: - algorithm: - description: |- - Algorithm is the load balancing algorithm to use. - Accepted values are: "round-robin", "consistent-hashing", "least-connections", "latency". - enum: - - round-robin - - consistent-hashing - - least-connections - - latency - type: string - hashOn: - description: |- - HashOn defines how to calculate hash for consistent-hashing load balancing algorithm. - Algorithm must be set to "consistent-hashing" for this field to have effect. - properties: - cookie: - description: Cookie is the name of the cookie to use as hash input. - type: string - cookiePath: - description: CookiePath is cookie path to set in the response - headers. - type: string - header: - description: Header is the name of the header to use as hash input. - type: string - input: - description: |- - Input allows using one of the predefined inputs (ip, consumer, path). - For other parametrized inputs, use one of the fields below. - enum: - - ip - - consumer - - path - type: string - queryArg: - description: QueryArg is the name of the query argument to use - as hash input. - type: string - uriCapture: - description: URICapture is the name of the URI capture group to - use as hash input. - type: string - type: object - hashOnFallback: - description: |- - HashOnFallback defines how to calculate hash for consistent-hashing load balancing algorithm if the primary hash - function fails. - Algorithm must be set to "consistent-hashing" for this field to have effect. - properties: - cookie: - description: Cookie is the name of the cookie to use as hash input. - type: string - cookiePath: - description: CookiePath is cookie path to set in the response - headers. - type: string - header: - description: Header is the name of the header to use as hash input. - type: string - input: - description: |- - Input allows using one of the predefined inputs (ip, consumer, path). - For other parametrized inputs, use one of the fields below. - enum: - - ip - - consumer - - path - type: string - queryArg: - description: QueryArg is the name of the query argument to use - as hash input. - type: string - uriCapture: - description: URICapture is the name of the URI capture group to - use as hash input. - type: string - type: object - healthchecks: - description: Healthchecks defines the health check configurations - in Kong. - properties: - active: - description: Active configures active health check probing. - properties: - concurrency: - description: Concurrency is the number of targets to check - concurrently. - minimum: 1 - type: integer - headers: - additionalProperties: - items: - type: string - type: array - description: Headers is a list of HTTP headers to add to the - probe request. - type: object - healthy: - description: Healthy configures thresholds and HTTP status - codes to mark targets healthy for an upstream. - properties: - httpStatuses: - description: HTTPStatuses is a list of HTTP status codes - that Kong considers a success. - items: - description: HTTPStatus is an HTTP status code. - maximum: 599 - minimum: 100 - type: integer - type: array - interval: - description: Interval is the interval between active health - checks for an upstream in seconds when in a healthy - state. - minimum: 0 - type: integer - successes: - description: Successes is the number of successes to consider - a target healthy. - minimum: 0 - type: integer - type: object - httpPath: - description: HTTPPath is the path to use in GET HTTP request - to run as a probe. - pattern: ^/.*$ - type: string - httpsSni: - description: HTTPSSNI is the SNI to use in GET HTTPS request - to run as a probe. - type: string - httpsVerifyCertificate: - description: HTTPSVerifyCertificate is a boolean value that - indicates if the certificate should be verified. - type: boolean - timeout: - description: Timeout is the probe timeout in seconds. - minimum: 0 - type: integer - type: - description: |- - Type determines whether to perform active health checks using HTTP or HTTPS, or just attempt a TCP connection. - Accepted values are "http", "https", "tcp", "grpc", "grpcs". - enum: - - http - - https - - tcp - - grpc - - grpcs - type: string - unhealthy: - description: Unhealthy configures thresholds and HTTP status - codes to mark targets unhealthy for an upstream. - properties: - httpFailures: - description: HTTPFailures is the number of failures to - consider a target unhealthy. - minimum: 0 - type: integer - httpStatuses: - description: HTTPStatuses is a list of HTTP status codes - that Kong considers a failure. - items: - description: HTTPStatus is an HTTP status code. - maximum: 599 - minimum: 100 - type: integer - type: array - interval: - description: Interval is the interval between active health - checks for an upstream in seconds when in an unhealthy - state. - minimum: 0 - type: integer - tcpFailures: - description: TCPFailures is the number of TCP failures - in a row to consider a target unhealthy. - minimum: 0 - type: integer - timeouts: - description: Timeouts is the number of timeouts in a row - to consider a target unhealthy. - minimum: 0 - type: integer - type: object - type: object - passive: - description: Passive configures passive health check probing. - properties: - healthy: - description: Healthy configures thresholds and HTTP status - codes to mark targets healthy for an upstream. - properties: - httpStatuses: - description: HTTPStatuses is a list of HTTP status codes - that Kong considers a success. - items: - description: HTTPStatus is an HTTP status code. - maximum: 599 - minimum: 100 - type: integer - type: array - interval: - description: Interval is the interval between active health - checks for an upstream in seconds when in a healthy - state. - minimum: 0 - type: integer - successes: - description: Successes is the number of successes to consider - a target healthy. - minimum: 0 - type: integer - type: object - type: - description: |- - Type determines whether to perform passive health checks interpreting HTTP/HTTPS statuses, - or just check for TCP connection success. - Accepted values are "http", "https", "tcp", "grpc", "grpcs". - enum: - - http - - https - - tcp - - grpc - - grpcs - type: string - unhealthy: - description: Unhealthy configures thresholds and HTTP status - codes to mark targets unhealthy. - properties: - httpFailures: - description: HTTPFailures is the number of failures to - consider a target unhealthy. - minimum: 0 - type: integer - httpStatuses: - description: HTTPStatuses is a list of HTTP status codes - that Kong considers a failure. - items: - description: HTTPStatus is an HTTP status code. - maximum: 599 - minimum: 100 - type: integer - type: array - interval: - description: Interval is the interval between active health - checks for an upstream in seconds when in an unhealthy - state. - minimum: 0 - type: integer - tcpFailures: - description: TCPFailures is the number of TCP failures - in a row to consider a target unhealthy. - minimum: 0 - type: integer - timeouts: - description: Timeouts is the number of timeouts in a row - to consider a target unhealthy. - minimum: 0 - type: integer - type: object - type: object - threshold: - description: |- - Threshold is the minimum percentage of the upstream’s targets’ weight that must be available for the whole - upstream to be considered healthy. - type: integer - type: object - slots: - description: |- - Slots is the number of slots in the load balancer algorithm. - If not set, the default value in Kong for the algorithm is used. - maximum: 65536 - minimum: 10 - type: integer - type: object - status: - description: Status defines the current state of KongUpstreamPolicy - properties: - ancestors: - description: |- - Ancestors is a list of ancestor resources (usually Gateways) that are - associated with the policy, and the status of the policy with respect to - each ancestor. When this policy attaches to a parent, the controller that - manages the parent and the ancestors MUST add an entry to this list when - the controller first sees the policy and SHOULD update the entry as - appropriate when the relevant ancestor is modified. - - Note that choosing the relevant ancestor is left to the Policy designers; - an important part of Policy design is designing the right object level at - which to namespace this status. - - Note also that implementations MUST ONLY populate ancestor status for - the Ancestor resources they are responsible for. Implementations MUST - use the ControllerName field to uniquely identify the entries in this list - that they are responsible for. - - Note that to achieve this, the list of PolicyAncestorStatus structs - MUST be treated as a map with a composite key, made up of the AncestorRef - and ControllerName fields combined. - - A maximum of 16 ancestors will be represented in this list. An empty list - means the Policy is not relevant for any ancestors. - - If this slice is full, implementations MUST NOT add further entries. - Instead they MUST consider the policy unimplementable and signal that - on any related resources such as the ancestor that would be referenced - here. For example, if this list was full on BackendTLSPolicy, no - additional Gateways would be able to reference the Service targeted by - the BackendTLSPolicy. - items: - description: |- - PolicyAncestorStatus describes the status of a route with respect to an - associated Ancestor. - - Ancestors refer to objects that are either the Target of a policy or above it - in terms of object hierarchy. For example, if a policy targets a Service, the - Policy's Ancestors are, in order, the Service, the HTTPRoute, the Gateway, and - the GatewayClass. Almost always, in this hierarchy, the Gateway will be the most - useful object to place Policy status on, so we recommend that implementations - SHOULD use Gateway as the PolicyAncestorStatus object unless the designers - have a _very_ good reason otherwise. - - In the context of policy attachment, the Ancestor is used to distinguish which - resource results in a distinct application of this policy. For example, if a policy - targets a Service, it may have a distinct result per attached Gateway. - - Policies targeting the same resource may have different effects depending on the - ancestors of those resources. For example, different Gateways targeting the same - Service may have different capabilities, especially if they have different underlying - implementations. - - For example, in BackendTLSPolicy, the Policy attaches to a Service that is - used as a backend in a HTTPRoute that is itself attached to a Gateway. - In this case, the relevant object for status is the Gateway, and that is the - ancestor object referred to in this status. - - Note that a parent is also an ancestor, so for objects where the parent is the - relevant object for status, this struct SHOULD still be used. - - This struct is intended to be used in a slice that's effectively a map, - with a composite key made up of the AncestorRef and the ControllerName. - properties: - ancestorRef: - description: |- - AncestorRef corresponds with a ParentRef in the spec that this - PolicyAncestorStatus struct describes the status of. - properties: - group: - default: gateway.networking.k8s.io - description: |- - Group is the group of the referent. - When unspecified, "gateway.networking.k8s.io" is inferred. - To set the core API group (such as for a "Service" kind referent), - Group must be explicitly set to "" (empty string). - - Support: Core - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Gateway - description: |- - Kind is kind of the referent. - - There are two kinds of parent resources with "Core" support: - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - Support for other resources is Implementation-Specific. - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: |- - Name is the name of the referent. - - Support: Core - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the referent. When unspecified, this refers - to the local namespace of the Route. - - Note that there are specific rules for ParentRefs which cross namespace - boundaries. Cross-namespace references are only valid if they are explicitly - allowed by something in the namespace they are referring to. For example: - Gateway has the AllowedRoutes field, and ReferenceGrant provides a - generic way to enable any other kind of cross-namespace reference. - - - ParentRefs from a Route to a Service in the same namespace are "producer" - routes, which apply default routing rules to inbound connections from - any namespace to the Service. - - ParentRefs from a Route to a Service in a different namespace are - "consumer" routes, and these routing rules are only applied to outbound - connections originating from the same namespace as the Route, for which - the intended destination of the connections are a Service targeted as a - ParentRef of the Route. - - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port is the network port this Route targets. It can be interpreted - differently based on the type of parent resource. - - When the parent resource is a Gateway, this targets all listeners - listening on the specified port that also support this kind of Route(and - select this Route). It's not recommended to set `Port` unless the - networking behaviors specified in a Route must apply to a specific port - as opposed to a listener(s) whose port(s) may be changed. When both Port - and SectionName are specified, the name and port of the selected listener - must match both specified values. - - - When the parent resource is a Service, this targets a specific port in the - Service spec. When both Port (experimental) and SectionName are specified, - the name and port of the selected port must match both specified values. - - - Implementations MAY choose to support other parent resources. - Implementations supporting other types of parent resources MUST clearly - document how/if Port is interpreted. - - For the purpose of status, an attachment is considered successful as - long as the parent resource accepts it partially. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment - from the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, - the Route MUST be considered detached from the Gateway. - - Support: Extended - format: int32 - maximum: 65535 - minimum: 1 - type: integer - sectionName: - description: |- - SectionName is the name of a section within the target resource. In the - following resources, SectionName is interpreted as the following: - - * Gateway: Listener name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - * Service: Port name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - - Implementations MAY choose to support attaching Routes to other resources. - If that is the case, they MUST clearly document how SectionName is - interpreted. - - When unspecified (empty string), this will reference the entire resource. - For the purpose of status, an attachment is considered successful if at - least one section in the parent resource accepts it. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from - the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, the - Route MUST be considered detached from the Gateway. - - Support: Core - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - required: - - name - type: object - conditions: - description: Conditions describes the status of the Policy with - respect to the given Ancestor. - items: - description: Condition contains details for one aspect of - the current state of this API Resource. - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, - Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - maxItems: 8 - minItems: 1 - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - controllerName: - description: |- - ControllerName is a domain/path string that indicates the name of the - controller that wrote this status. This corresponds with the - controllerName field on GatewayClass. - - Example: "example.net/gateway-controller". - - The format of this field is DOMAIN "/" PATH, where DOMAIN and PATH are - valid Kubernetes names - (https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names). - - Controllers MUST populate this field when writing status. Controllers should ensure that - entries to status populated with their ControllerName are cleaned up when they are no - longer necessary. - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$ - type: string - required: - - ancestorRef - - controllerName - type: object - maxItems: 16 - type: array - required: - - ancestors - type: object - type: object - x-kubernetes-validations: - - message: Only one of spec.hashOn.(input|cookie|header|uriCapture|queryArg) - can be set. - rule: 'has(self.spec.hashOn) ? [has(self.spec.hashOn.input), has(self.spec.hashOn.cookie), - has(self.spec.hashOn.header), has(self.spec.hashOn.uriCapture), has(self.spec.hashOn.queryArg)].filter(fieldSet, - fieldSet == true).size() <= 1 : true' - - message: When spec.hashOn.cookie is set, spec.hashOn.cookiePath is required. - rule: 'has(self.spec.hashOn) && has(self.spec.hashOn.cookie) ? has(self.spec.hashOn.cookiePath) - : true' - - message: When spec.hashOn.cookiePath is set, spec.hashOn.cookie is required. - rule: 'has(self.spec.hashOn) && has(self.spec.hashOn.cookiePath) ? has(self.spec.hashOn.cookie) - : true' - - message: spec.algorithm must be set to "consistent-hashing" when spec.hashOn - is set. - rule: 'has(self.spec.hashOn) ? has(self.spec.algorithm) && self.spec.algorithm - == "consistent-hashing" : true' - - message: Only one of spec.hashOnFallback.(input|header|uriCapture|queryArg) - can be set. - rule: 'has(self.spec.hashOnFallback) ? [has(self.spec.hashOnFallback.input), - has(self.spec.hashOnFallback.header), has(self.spec.hashOnFallback.uriCapture), - has(self.spec.hashOnFallback.queryArg)].filter(fieldSet, fieldSet == true).size() - <= 1 : true' - - message: spec.algorithm must be set to "consistent-hashing" when spec.hashOnFallback - is set. - rule: 'has(self.spec.hashOnFallback) ? has(self.spec.algorithm) && self.spec.algorithm - == "consistent-hashing" : true' - - message: spec.hashOnFallback.cookie must not be set. - rule: 'has(self.spec.hashOnFallback) ? !has(self.spec.hashOnFallback.cookie) - : true' - - message: spec.hashOnFallback.cookiePath must not be set. - rule: 'has(self.spec.hashOnFallback) ? !has(self.spec.hashOnFallback.cookiePath) - : true' - - message: spec.healthchecks.passive.healthy.interval must not be set. - rule: 'has(self.spec.healthchecks) && has(self.spec.healthchecks.passive) - && has(self.spec.healthchecks.passive.healthy) ? !has(self.spec.healthchecks.passive.healthy.interval) - : true' - - message: spec.healthchecks.passive.unhealthy.interval must not be set. - rule: 'has(self.spec.healthchecks) && has(self.spec.healthchecks.passive) - && has(self.spec.healthchecks.passive.unhealthy) ? !has(self.spec.healthchecks.passive.unhealthy.interval) - : true' - - message: spec.hashOnFallback must not be set when spec.hashOn.cookie is - set. - rule: 'has(self.spec.hashOn) && has(self.spec.hashOn.cookie) ? !has(self.spec.hashOnFallback) - : true' - served: true - storage: true - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: kongvaults.configuration.konghq.com -spec: - group: configuration.konghq.com - names: - categories: - - kong-ingress-controller - kind: KongVault - listKind: KongVaultList - plural: kongvaults - shortNames: - - kv - singular: kongvault - scope: Cluster - versions: - - additionalPrinterColumns: - - description: Name of the backend of the vault - jsonPath: .spec.backend - name: Backend Type - type: string - - description: Prefix of vault URI to reference the values in the vault - jsonPath: .spec.prefix - name: Prefix - type: string - - description: Age - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - description: Description - jsonPath: .spec.description - name: Description - priority: 1 - type: string - - jsonPath: .status.conditions[?(@.type=="Programmed")].status - name: Programmed - type: string - name: v1alpha1 - schema: - openAPIV3Schema: - description: |- - KongVault is the schema for kongvaults API which defines a custom Kong vault. - A Kong vault is a storage to store sensitive data, where the values can be referenced in configuration of plugins. - See: https://docs.konghq.com/gateway/latest/kong-enterprise/secrets-management/ - 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: KongVaultSpec defines specification of a custom Kong vault. - properties: - backend: - description: |- - Backend is the type of the backend storing the secrets in the vault. - The supported backends of Kong is listed here: - https://docs.konghq.com/gateway/latest/kong-enterprise/secrets-management/backends/ - minLength: 1 - type: string - config: - description: Config is the configuration of the vault. Varies for - different backends. - x-kubernetes-preserve-unknown-fields: true - description: - description: Description is the additional information about the vault. - type: string - prefix: - description: |- - Prefix is the prefix of vault URI for referencing values in the vault. - It is immutable after created. - minLength: 1 - type: string - required: - - backend - - prefix - type: object - status: - description: KongVaultStatus represents the current status of the KongVault - resource. - properties: - conditions: - default: - - lastTransitionTime: "1970-01-01T00:00:00Z" - message: Waiting for controller - reason: Pending - status: Unknown - type: Programmed - description: |- - Conditions describe the current conditions of the KongVaultStatus. - - Known condition types are: - - * "Programmed" - items: - description: Condition contains details for one aspect of the current - state of this API Resource. - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - maxItems: 8 - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - required: - - conditions - type: object - required: - - spec - type: object - x-kubernetes-validations: - - message: The spec.prefix field is immutable - rule: self.spec.prefix == oldSelf.spec.prefix - served: true - storage: true - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: tcpingresses.configuration.konghq.com -spec: - group: configuration.konghq.com - names: - categories: - - kong-ingress-controller - kind: TCPIngress - listKind: TCPIngressList - plural: tcpingresses - singular: tcpingress - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Address of the load balancer - jsonPath: .status.loadBalancer.ingress[*].ip - name: Address - type: string - - description: Age - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: TCPIngress is the Schema for the tcpingresses 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: Spec is the TCPIngress specification. - properties: - rules: - description: A list of rules used to configure the Ingress. - items: - description: |- - IngressRule represents a rule to apply against incoming requests. - Matching is performed based on an (optional) SNI and port. - properties: - backend: - description: |- - Backend defines the referenced service endpoint to which the traffic - will be forwarded to. - properties: - serviceName: - description: Specifies the name of the referenced service. - minLength: 1 - type: string - servicePort: - description: Specifies the port of the referenced service. - format: int32 - maximum: 65535 - minimum: 1 - type: integer - required: - - serviceName - - servicePort - type: object - host: - description: |- - Host is the fully qualified domain name of a network host, as defined - by RFC 3986. - If a Host is not specified, then port-based TCP routing is performed. Kong - doesn't care about the content of the TCP stream in this case. - If a Host is specified, the protocol must be TLS over TCP. - A plain-text TCP request cannot be routed based on Host. It can only - be routed based on Port. - type: string - port: - description: |- - Port is the port on which to accept TCP or TLS over TCP sessions and - route. It is a required field. If a Host is not specified, the requested - are routed based only on Port. - format: int32 - maximum: 65535 - minimum: 1 - type: integer - required: - - backend - - port - type: object - type: array - tls: - description: |- - TLS configuration. This is similar to the `tls` section in the - Ingress resource in networking.v1beta1 group. - The mapping of SNIs to TLS cert-key pair defined here will be - used for HTTP Ingress rules as well. Once can define the mapping in - this resource or the original Ingress resource, both have the same - effect. - items: - description: IngressTLS describes the transport layer security. - properties: - hosts: - description: |- - Hosts are a list of hosts included in the TLS certificate. The values in - this list must match the name/s used in the tlsSecret. Defaults to the - wildcard host setting for the loadbalancer controller fulfilling this - Ingress, if left unspecified. - items: - type: string - type: array - secretName: - description: SecretName is the name of the secret used to terminate - SSL traffic. - type: string - type: object - type: array - type: object - status: - description: TCPIngressStatus defines the observed state of TCPIngress. - properties: - loadBalancer: - description: LoadBalancer contains the current status of the load-balancer. - properties: - ingress: - description: |- - Ingress is a list containing ingress points for the load-balancer. - Traffic intended for the service should be sent to these ingress points. - items: - description: |- - LoadBalancerIngress represents the status of a load-balancer ingress point: - traffic intended for the service should be sent to an ingress point. - properties: - hostname: - description: |- - Hostname is set for load-balancer ingress points that are DNS based - (typically AWS load-balancers) - type: string - ip: - description: |- - IP is set for load-balancer ingress points that are IP based - (typically GCE or OpenStack load-balancers) - type: string - ipMode: - description: |- - IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified. - Setting this to "VIP" indicates that traffic is delivered to the node with - the destination set to the load-balancer's IP and port. - Setting this to "Proxy" indicates that traffic is delivered to the node or pod with - the destination set to the node's IP and node port or the pod's IP and port. - Service implementations may use this information to adjust traffic routing. - type: string - ports: - description: |- - Ports is a list of records of service ports - If used, every port defined in the service should have an entry in it - items: - properties: - error: - description: |- - Error is to record the problem with the service port - The format of the error shall comply with the following rules: - - built-in error values shall be specified in this file and those shall use - CamelCase names - - cloud provider specific error values must have names that comply with the - format foo.example.com/CamelCase. - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - port: - description: Port is the port number of the service - port of which status is recorded here - format: int32 - type: integer - protocol: - description: |- - Protocol is the protocol of the service port of which status is recorded here - The supported values are: "TCP", "UDP", "SCTP" - type: string - required: - - error - - port - - protocol - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: object - type: object - served: true - storage: true - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: udpingresses.configuration.konghq.com -spec: - group: configuration.konghq.com - names: - categories: - - kong-ingress-controller - kind: UDPIngress - listKind: UDPIngressList - plural: udpingresses - singular: udpingress - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Address of the load balancer - jsonPath: .status.loadBalancer.ingress[*].ip - name: Address - type: string - - description: Age - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: UDPIngress is the Schema for the udpingresses 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: Spec is the UDPIngress specification. - properties: - rules: - description: A list of rules used to configure the Ingress. - items: - description: |- - UDPIngressRule represents a rule to apply against incoming requests - wherein no Host matching is available for request routing, only the port - is used to match requests. - properties: - backend: - description: |- - Backend defines the Kubernetes service which accepts traffic from the - listening Port defined above. - properties: - serviceName: - description: Specifies the name of the referenced service. - minLength: 1 - type: string - servicePort: - description: Specifies the port of the referenced service. - format: int32 - maximum: 65535 - minimum: 1 - type: integer - required: - - serviceName - - servicePort - type: object - port: - description: |- - Port indicates the port for the Kong proxy to accept incoming traffic - on, which will then be routed to the service Backend. - format: int32 - maximum: 65535 - minimum: 1 - type: integer - required: - - backend - - port - type: object - type: array - type: object - status: - description: UDPIngressStatus defines the observed state of UDPIngress. - properties: - loadBalancer: - description: LoadBalancer contains the current status of the load-balancer. - properties: - ingress: - description: |- - Ingress is a list containing ingress points for the load-balancer. - Traffic intended for the service should be sent to these ingress points. - items: - description: |- - LoadBalancerIngress represents the status of a load-balancer ingress point: - traffic intended for the service should be sent to an ingress point. - properties: - hostname: - description: |- - Hostname is set for load-balancer ingress points that are DNS based - (typically AWS load-balancers) - type: string - ip: - description: |- - IP is set for load-balancer ingress points that are IP based - (typically GCE or OpenStack load-balancers) - type: string - ipMode: - description: |- - IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified. - Setting this to "VIP" indicates that traffic is delivered to the node with - the destination set to the load-balancer's IP and port. - Setting this to "Proxy" indicates that traffic is delivered to the node or pod with - the destination set to the node's IP and node port or the pod's IP and port. - Service implementations may use this information to adjust traffic routing. - type: string - ports: - description: |- - Ports is a list of records of service ports - If used, every port defined in the service should have an entry in it - items: - properties: - error: - description: |- - Error is to record the problem with the service port - The format of the error shall comply with the following rules: - - built-in error values shall be specified in this file and those shall use - CamelCase names - - cloud provider specific error values must have names that comply with the - format foo.example.com/CamelCase. - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - port: - description: Port is the port number of the service - port of which status is recorded here - format: int32 - type: integer - protocol: - description: |- - Protocol is the protocol of the service port of which status is recorded here - The supported values are: "TCP", "UDP", "SCTP" - type: string - required: - - error - - port - - protocol - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: object - type: object - served: true - storage: true - subresources: - status: {} diff --git a/manifests/helm/kong/2.46.0/custom-values.yaml b/manifests/helm/kong/2.46.0/custom-values.yaml deleted file mode 100644 index 9caf72c..0000000 --- a/manifests/helm/kong/2.46.0/custom-values.yaml +++ /dev/null @@ -1,166 +0,0 @@ -image: - repository: paasup/kong-oidc-keycloak-authz - tag: 3.4.0-0.1.0 - -deployment: - kong: - enabled: true - daemonset: false - - # proxy 컨테이너의 timezone 설정 - userDefinedVolumeMounts: - - name: tz-config - mountPath: /etc/localtime - userDefinedVolumes: - - name: tz-config - hostPath: - path: /usr/share/zoneinfo/Asia/Seoul - -# Kong proxy 서비스 설정 -proxy: - enabled: true - type: LoadBalancer - ingress: - enable: false - -## Host Port 배포 예시 추가 -# proxy: -# enabled: true -# type: ClusterIP -# ingress: -# enable: false -# http: -# hostPort: 80 -# tls: -# hostPort: 443 - - -# Kong admin API 서비스 설정 -admin: - annotations: - konghq.com/protocol: https - enabled: true - type: ClusterIP - ingress: - enabled: true - annotations: - konghq.com/https-redirect-status-code: "301" - konghq.com/protocols: https - konghq.com/strip-path: "true" - hostname: kong.example.org - ingressClassName: kong - path: /api - # certificate를 사용하여 추가시 해당 이름으로 생성됨 - # (helm release는 kong으로 배포해야함) - tls: kong-kong-admin-cert - -manager: - enabled: true - type: ClusterIP - annotations: - konghq.com/protocol: https - http: - enabled: false - ingress: - enabled: true - annotations: - konghq.com/https-redirect-status-code: "301" - konghq.com/protocols: https - hostname: kong.example.org - ingressClassName: kong - path: / - tls: kong-kong-admin-cert - -# cluster: -# enabled: false -# type: ClusterIP -# tls: -# enabled: true -# labels: -# konghq.com/service: cluster - -# Enterprise 영역 비활성화 -enterprise: - enabled: false -portal: - enabled: false -portalapi: - enabled: false -clustertelemetry: - enabled: false - -# cert-manager를 통한 인증서 생성 설정 -certificates: - enabled: true - clusterIssuer: selfsigned-issuer - admin: - enabled: true - commonName: kong.example.org - portal: - enabled: false - proxy: - enabled: false - cluster: - enabled: false - -# Kong의 Conriguration 설정 -env: - admin_access_log: /dev/stdout - admin_error_log: /dev/stdout - admin_gui_access_log: /dev/stdout - admin_gui_error_log: /dev/stdout - cluster_data_plane_purge_delay: 60 - cluster_listen: 0.0.0.0:8005 - cluster_telemetry_listen: 0.0.0.0:8006 - log_level: info - lua_package_path: /opt/?.lua;; - nginx_worker_processes: "2" - database: postgres - pg_database: kong - pg_host: kong-postgresql.kong.svc.cluster.local - pg_ssl: "off" - pg_ssl_verify: "off" - pg_user: kong - pg_password: password - plugins: bundled, oidc, keycloak-authz - prefix: /kong_prefix/ - proxy_access_log: /dev/stdout - proxy_error_log: /dev/stdout - proxy_stream_access_log: /dev/stdout - proxy_stream_error_log: /dev/stdout - status_listen: 0.0.0.0:8100 - trusted_ips: 0.0.0.0/0,::/0 - nginx_proxy_proxy_buffer_size: "128k" - nginx_proxy_proxy_buffers: "8 256k" - -# Ingress Controller 설정 -ingressController: - enabled: true - image: - repository: kong/kubernetes-ingress-controller - tag: "3.3" - env: - kong_admin_filter_tag: ingress_controller_kong - kong_admin_tls_skip_verify: true - kong_admin_url: https://localhost:8444 - publish_service: kong/kong-kong-proxy - admissionWebhook: - enabled: false - - # ingress-controller 컨테이너의 timezone 설정 - customEnv: - TZ: "Asia/Seoul" - -migrations: - enabled: true - postUpgrade: true - preUpgrade: true - - -# sub-chart postgres -postgresql: - enabled: true - auth: - database: kong - username: kong - password: password diff --git a/manifests/helm/kong/2.46.0/templates/NOTES.txt b/manifests/helm/kong/2.46.0/templates/NOTES.txt deleted file mode 100644 index bb370e9..0000000 --- a/manifests/helm/kong/2.46.0/templates/NOTES.txt +++ /dev/null @@ -1,48 +0,0 @@ -To connect to Kong, please execute the following commands: -{{ if contains "LoadBalancer" .Values.proxy.type }} -HOST=$(kubectl get svc --namespace {{ template "kong.namespace" . }} {{ template "kong.fullname" . }}-proxy -o jsonpath='{.status.loadBalancer.ingress[0].ip}') -PORT=$(kubectl get svc --namespace {{ template "kong.namespace" . }} {{ template "kong.fullname" . }}-proxy -o jsonpath='{.spec.ports[0].port}') -{{ else if contains "NodePort" .Values.proxy.type }}HOST=$(kubectl get nodes --namespace {{ template "kong.namespace" . }} -o jsonpath='{.items[0].status.addresses[0].address}') -PORT=$(kubectl get svc --namespace {{ template "kong.namespace" . }} {{ template "kong.fullname" . }}-proxy -o jsonpath='{.spec.ports[0].nodePort}') -{{ end -}} -export PROXY_IP=${HOST}:${PORT} -curl $PROXY_IP - -Once installed, please follow along the getting started guide to start using -Kong: https://docs.konghq.com/kubernetes-ingress-controller/latest/guides/getting-started/ - -{{ $warnings := list -}} - -{{- if (hasKey .Values.ingressController "serviceAccount") -}} -{{- if (or (hasKey .Values.ingressController.serviceAccount "name") (hasKey .Values.ingressController.serviceAccount "annotations")) -}} -{{- $warnings = append $warnings "you have set either .ingressController.serviceAccount.name or .ingressController.serviceAccount.annotations. These settings have moved to .deployment.serviceAccount.name and .deployment.serviceAccount.annotations. You must move your configuration to the new location in values.yaml" -}} -{{- end -}} -{{- end -}} - -{{- if and .Values.manager.enabled (or .Values.manager.http.enabled .Values.manager.tls.enabled) -}} -{{- if not (and .Values.admin.enabled (or .Values.admin.http.enabled .Values.admin.tls.enabled)) -}} -{{- $warnings = append $warnings "Kong Manager will not be functional because the Admin API is not enabled. Setting both .admin.enabled and .admin.http.enabled and/or .admin.tls.enabled to true to enable the Admin API over HTTP/TLS." -}} -{{- end -}} -{{- end -}} - -{{- if and .Values.ingressController.konnect.enabled .Values.ingressController.konnect.runtimeGroupID -}} -{{- if not .Values.ingressController.konnect.controlPlaneID -}} -{{- $warnings = append $warnings "Please use `.ingressController.konnect.controlPlaneID` instead. `.ingressController.konnect.runtimeGroupID` will be removed in a future release." -}} -{{- end -}} -{{- end -}} - -{{- include "kong.deprecation-warnings" $warnings -}} - -{{- if .Values.demo -}} - -############################################################################################# -##### WARNING: DEMO VALUES USED -############################################################################################# - -The values file used has been marked as a demo configuration. -It should NOT be used in production without comprehensive review of all settings provided. - -############################################################################################# -##### WARNING: DEMO VALUES USED -############################################################################################# -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/templates/_helpers.tpl b/manifests/helm/kong/2.46.0/templates/_helpers.tpl deleted file mode 100644 index 92f728c..0000000 --- a/manifests/helm/kong/2.46.0/templates/_helpers.tpl +++ /dev/null @@ -1,1871 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -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 "kong.namespace" -}} -{{- default .Release.Namespace .Values.namespace -}} -{{- end -}} - -{{- define "kong.release" -}} -{{- default .Release.Name -}} -{{- end -}} - -{{- define "kong.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{- define "kong.fullname" -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- default (printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-") .Values.fullnameOverride -}} -{{- end -}} - -{{- define "kong.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{- define "kong.metaLabels" -}} -app.kubernetes.io/name: {{ template "kong.name" . }} -helm.sh/chart: {{ template "kong.chart" . }} -app.kubernetes.io/instance: "{{ .Release.Name }}" -app.kubernetes.io/managed-by: "{{ .Release.Service }}" -{{ $version := semver (include "kong.effectiveVersion" .Values.image) }} -app.kubernetes.io/version: {{ printf "%d.%d" $version.Major $version.Minor | quote }} -{{- range $key, $value := .Values.extraLabels }} -{{ $key }}: {{ include "kong.renderTpl" (dict "value" $value "context" $) | quote }} -{{- end }} -{{- end -}} - -{{- define "kong.selectorLabels" -}} -app.kubernetes.io/name: {{ template "kong.name" . }} -app.kubernetes.io/component: app -app.kubernetes.io/instance: "{{ .Release.Name }}" -{{- end -}} - -{{- define "kong.postgresql.fullname" -}} -{{- $name := default "postgresql" .Values.postgresql.nameOverride -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{- define "kong.dblessConfig.fullname" -}} -{{- $name := default "kong-custom-dbless-config" .Values.dblessConfig.nameOverride -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create the name of the service account to use -*/}} -{{- define "kong.serviceAccountName" -}} -{{- if .Values.deployment.serviceAccount.create -}} - {{ default (include "kong.fullname" .) .Values.deployment.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.deployment.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{/* -Create the name of the secret for service account token to use -*/}} -{{- define "kong.serviceAccountTokenName" -}} -{{ include "kong.serviceAccountName" . }}-token -{{- end -}} - -{{/* -Create Ingress resource for a Kong service -*/}} -{{- define "kong.ingress" -}} -{{- $servicePort := include "kong.ingress.servicePort" . }} -{{- $path := .ingress.path -}} -{{- $hostname := .ingress.hostname -}} -{{- $pathType := .ingress.pathType -}} -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: {{ .fullName }}-{{ .serviceName }} - namespace: {{ .namespace }} - labels: - {{- .metaLabels | nindent 4 }} - {{- range $key, $value := .ingress.labels }} - {{- $key | nindent 4 }}: {{ $value | quote }} - {{- end }} - {{- if .ingress.annotations }} - annotations: - {{- range $key, $value := .ingress.annotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} - {{- end }} -spec: -{{- if .ingress.ingressClassName }} - ingressClassName: {{ .ingress.ingressClassName }} -{{- end }} - rules: - {{- if ( not (or $hostname .ingress.hosts)) }} - - http: - paths: - - backend: - service: - name: {{ .fullName }}-{{ .serviceName }} - port: - number: {{ $servicePort }} - path: {{ $path }} - pathType: {{ $pathType }} - {{- else if $hostname }} - - host: {{ $hostname | quote }} - http: - paths: - - backend: - service: - name: {{ .fullName }}-{{ .serviceName }} - port: - number: {{ $servicePort }} - path: {{ $path }} - pathType: {{ $pathType }} - {{- end }} - {{- range .ingress.hosts }} - - host: {{ .host | quote }} - http: - paths: - {{- range .paths }} - - backend: - {{- if .backend -}} - {{ .backend | toYaml | nindent 12 }} - {{- else }} - service: - name: {{ $.fullName }}-{{ $.serviceName }} - port: - number: {{ $servicePort }} - {{- end }} - {{- if (and $hostname (and (eq $path .path))) }} - {{- fail "duplication of specified ingress path" }} - {{- end }} - path: {{ .path }} - pathType: {{ .pathType }} - {{- end }} - {{- end }} - {{- if (hasKey .ingress "tls") }} - tls: - {{- if (kindIs "string" .ingress.tls) }} - - hosts: - {{- range .ingress.hosts }} - - {{ .host | quote }} - {{- end }} - {{- if $hostname }} - - {{ $hostname | quote }} - {{- end }} - secretName: {{ .ingress.tls }} - {{- else if (kindIs "slice" .ingress.tls) }} - {{- range .ingress.tls }} - - hosts: - {{- range .hosts }} - - {{ . | quote }} - {{- end }} - secretName: {{ .secretName }} - {{- end }} - {{- end }} - {{- end }} -{{- end -}} - -{{/* -Create Service resource for a Kong service -*/}} -{{- define "kong.service" -}} -apiVersion: v1 -kind: Service -metadata: - name: {{ .fullName }}-{{ .serviceName }} - namespace: {{ .namespace }} - {{- if .annotations }} - annotations: - {{- range $key, $value := .annotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} - {{- end }} - labels: - {{- .metaLabels | nindent 4 }} - {{- range $key, $value := .labels }} - {{ $key }}: {{ $value | quote }} - {{- end }} -spec: - type: {{ .type }} - {{- if eq .type "LoadBalancer" }} - {{- if .loadBalancerIP }} - loadBalancerIP: {{ .loadBalancerIP }} - {{- end }} - {{- if .loadBalancerSourceRanges }} - loadBalancerSourceRanges: - {{- range $cidr := .loadBalancerSourceRanges }} - - {{ $cidr }} - {{- end }} - {{- end }} - {{- if .loadBalancerClass }} - loadBalancerClass: {{ .loadBalancerClass }} - {{- end }} - {{- end }} - {{- if .externalIPs }} - externalIPs: - {{- range $ip := .externalIPs }} - - {{ $ip }} - {{- end -}} - {{- end }} - ports: - {{- if .http }} - {{- if .http.enabled }} - {{- if ne ( .http.servicePort | toString ) "0" }} - - name: kong-{{ .serviceName }} - port: {{ .http.servicePort }} - targetPort: {{ .http.containerPort }} - {{- if .http.appProtocol }} - appProtocol: {{ .http.appProtocol }} - {{- end }} - {{- if (and (or (eq .type "LoadBalancer") (eq .type "NodePort")) (not (empty .http.nodePort))) }} - nodePort: {{ .http.nodePort }} - {{- end }} - protocol: TCP - {{- end }} - {{- end }} - {{- end }} - {{- if .tls.enabled }} - - name: kong-{{ .serviceName }}-tls - port: {{ .tls.servicePort }} - targetPort: {{ .tls.overrideServiceTargetPort | default .tls.containerPort }} - {{- if .tls.appProtocol }} - appProtocol: {{ .tls.appProtocol }} - {{- end }} - {{- if (and (or (eq .type "LoadBalancer") (eq .type "NodePort")) (not (empty .tls.nodePort))) }} - nodePort: {{ .tls.nodePort }} - {{- end }} - protocol: TCP - {{- end }} - {{- if (hasKey . "stream") }} - {{- $defaultProtocol := "TCP" }} - {{- if (hasSuffix "udp-proxy" .serviceName) }} - {{- $defaultProtocol = "UDP" }} - {{- end }} - {{- range $index, $streamEntry := .stream }} - {{- if (not (hasKey $streamEntry "protocol")) }} - {{- $_ := set $streamEntry "protocol" $defaultProtocol }} - {{- end }} - {{- end }} - {{- range .stream }} - - name: stream{{ if (eq (default "TCP" .protocol) "UDP") }}udp{{ end }}-{{ .containerPort }} - port: {{ .servicePort }} - targetPort: {{ .containerPort }} - {{- if (and (or (eq $.type "LoadBalancer") (eq $.type "NodePort")) (not (empty .nodePort))) }} - nodePort: {{ .nodePort }} - {{- end }} - protocol: {{ .protocol | default "TCP" }} - {{- end }} - {{- end }} - {{- if .externalTrafficPolicy }} - externalTrafficPolicy: {{ .externalTrafficPolicy }} - {{- end }} - {{- if .clusterIP }} - {{- if (or (not (eq .clusterIP "None")) (and (eq .type "ClusterIP") (eq .clusterIP "None"))) }} - clusterIP: {{ .clusterIP }} - {{- end }} - {{- end }} - selector: - {{- .selectorLabels | nindent 4 }} -{{- end -}} - - -{{/* -Create KONG_SERVICE_LISTEN strings -Generic tool for creating KONG_PROXY_LISTEN, KONG_ADMIN_LISTEN, etc. -*/}} -{{- define "kong.listen" -}} - {{- $unifiedListen := list -}} - {{- $defaultAddrs := (list "0.0.0.0" "[::]") -}} - - {{/* Some services do not support these blocks at all, so these checks are a - two-stage "is it safe to evaluate this?" and then "should we evaluate - this?" - */}} - {{- if .http -}} - {{- if .http.enabled -}} - {{- $listenConfig := dict -}} - {{- $listenConfig := merge $listenConfig .http -}} - {{- $addresses := (default $defaultAddrs .addresses) -}} - {{- range $addresses -}} - {{- $_ := set $listenConfig "address" . -}} - {{- $httpListen := (include "kong.singleListen" $listenConfig) -}} - {{- $unifiedListen = append $unifiedListen $httpListen -}} - {{- end -}} - {{- end -}} - {{- end -}} - - {{- if .tls -}} - {{- if .tls.enabled -}} - {{/* - This is a bit of a hack to support always including "ssl" in the parameter - list for TLS listens. It's not possible to set a variable to an object from - .Values and then modify one of the objects values locally, although - https://github.com/helm/helm/issues/4987 indicates it should be. Instead, - this creates a new object and new parameters list built from the original. - */}} - {{- $listenConfig := dict -}} - {{- $listenConfig := merge $listenConfig .tls -}} - {{- $parameters := append .tls.parameters "ssl" -}} - {{- $_ := set $listenConfig "parameters" $parameters -}} - {{- $addresses := (default $defaultAddrs .addresses) -}} - {{- range $addresses -}} - {{- $_ := set $listenConfig "address" . -}} - {{- $tlsListen := (include "kong.singleListen" $listenConfig) -}} - {{- $unifiedListen = append $unifiedListen $tlsListen -}} - {{- end -}} - {{- end -}} - {{- end -}} - - {{- $listenString := ($unifiedListen | join ", ") -}} - {{- if eq (len $listenString) 0 -}} - {{- $listenString = "off" -}} - {{- end -}} - {{- $listenString -}} -{{- end -}} - -{{/* -Create KONG_PORT_MAPS string -Parameters: takes a service (e.g. .Values.proxy) as its argument and returns KONG_PORT_MAPS for that service. -*/}} -{{- define "kong.port_maps" -}} - {{- $portMaps := list -}} - - {{- if .http.enabled -}} - {{- if ne (.http.servicePort | toString ) "0" -}} - {{- $portMaps = append $portMaps (printf "%d:%d" (int64 .http.servicePort) (int64 .http.containerPort)) -}} - {{- end -}} - {{- end -}} - - {{- if .tls.enabled -}} - {{- $portMaps = append $portMaps (printf "%d:%d" (int64 .tls.servicePort) (int64 .tls.containerPort)) -}} - {{- end -}} - - {{- $portMapsString := ($portMaps | join ", ") -}} - {{- $portMapsString -}} -{{- end -}} - -{{/* -Create KONG_STREAM_LISTEN string -*/}} -{{- define "kong.streamListen" -}} - {{- $unifiedListen := list -}} - {{- $defaultAddrs := (list "0.0.0.0" "[::]") -}} - {{- range .stream -}} - {{- $listenConfig := dict -}} - {{- $listenConfig := merge $listenConfig . -}} - {{- $addresses := (default $defaultAddrs .addresses) -}} - {{- range $addresses -}} - {{- $_ := set $listenConfig "address" . -}} - {{/* You set NGINX stream listens to UDP using a parameter due to historical reasons. - Our configuration is dual-purpose, for both the Service and listen string, so we - forcibly inject this parameter if that's the Service protocol. The default handles - configs that predate the addition of the protocol field, where we only supported TCP. */}} - {{- if (eq (default "TCP" $listenConfig.protocol) "UDP") -}} - {{- $_ := set $listenConfig "parameters" (append (default (list) $listenConfig.parameters) "udp") -}} - {{- end -}} - {{- $unifiedListen = append $unifiedListen (include "kong.singleListen" $listenConfig ) -}} - {{- end -}} - {{- end -}} - - {{- $listenString := ($unifiedListen | join ", ") -}} - {{- if eq (len $listenString) 0 -}} - {{- $listenString = "" -}} - {{- end -}} - {{- $listenString -}} -{{- end -}} - -{{/* -Create a single listen (IP+port+parameter combo) -*/}} -{{- define "kong.singleListen" -}} - {{- $listen := list -}} - {{- $listen = append $listen (printf "%s:%d" .address (int64 .containerPort)) -}} - {{- range $param := .parameters | default (list) | uniq }} - {{- $listen = append $listen $param -}} - {{- end -}} - {{- $listen | join " " -}} -{{- end -}} - -{{/* -Return the admin API service name for service discovery -*/}} -{{- define "kong.adminSvc" -}} -{{- $gatewayDiscovery := .Values.ingressController.gatewayDiscovery -}} -{{- if $gatewayDiscovery.enabled -}} - {{- $adminApiService := $gatewayDiscovery.adminApiService -}} - {{- $adminApiServiceName := $gatewayDiscovery.adminApiService.name -}} - {{- $generateAdminApiService := $gatewayDiscovery.generateAdminApiService -}} - - {{- if and $generateAdminApiService $adminApiService.name -}} - {{- fail (printf ".Values.ingressController.gatewayDiscovery.adminApiService and .Values.ingressController.gatewayDiscovery.generateAdminApiService must not be provided at the same time") -}} - {{- end -}} - - {{- if $generateAdminApiService -}} - {{- $adminApiServiceName = (printf "%s-%s" .Release.Name "gateway-admin") -}} - {{- else }} - {{- $_ := required ".ingressController.gatewayDiscovery.adminApiService.name has to be provided when .Values.ingressController.gatewayDiscovery.enabled is set to true" $adminApiServiceName -}} - {{- end }} - - {{- if (semverCompare "< 2.9.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} - {{- fail (printf "Gateway discovery is available in controller versions 2.9 and up. Detected %s" (include "kong.effectiveVersion" .Values.ingressController.image)) }} - {{- end }} - - {{- if .Values.deployment.kong.enabled }} - {{- fail "deployment.kong.enabled and ingressController.gatewayDiscovery.enabled are mutually exclusive and cannot be enabled at once. Gateway discovery requires a split release installation of Gateways and Ingress Controller." }} - {{- end }} - - {{- $namespace := $adminApiService.namespace | default ( include "kong.namespace" . ) -}} - {{- printf "%s/%s" $namespace $adminApiServiceName -}} -{{- else -}} - {{- fail "Can't use gateway discovery when .Values.ingressController.gatewayDiscovery.enabled is set to false." -}} -{{- end -}} -{{- end -}} - -{{/* -Return the local admin API URL, preferring HTTPS if available -*/}} -{{- define "kong.adminLocalURL" -}} - {{- if .Values.admin.tls.enabled -}} -https://localhost:{{ .Values.admin.tls.containerPort }} - {{- else if .Values.admin.http.enabled -}} -http://localhost:{{ .Values.admin.http.containerPort }} - {{- else -}} -http://localhost:9999 # You have no admin listens! The controller will not work unless you set .Values.admin.http.enabled=true or .Values.admin.tls.enabled=true! - {{- end -}} -{{- end -}} - -{{/* -Create the ingress servicePort value string -*/}} - -{{- define "kong.ingress.servicePort" -}} -{{- if .tls.enabled -}} - {{ .tls.servicePort }} -{{- else -}} - {{ .http.servicePort }} -{{- end -}} -{{- end -}} - -{{/* -Generate an appropriate external URL from a Kong service's ingress configuration -Strips trailing slashes from the path. Manager at least does not handle these -intelligently and will append its own slash regardless, and the admin API cannot handle -the extra slash. -*/}} - -{{- define "kong.ingress.serviceUrl" -}} -{{- if .tls -}} - https://{{ .hostname }}{{ .path | trimSuffix "/" }} -{{- else -}} - http://{{ .hostname }}{{ .path | trimSuffix "/" }} -{{- end -}} -{{- end -}} - -{{/* -The name of the service used for the ingress controller's validation webhook -*/}} - -{{- define "kong.service.validationWebhook" -}} -{{ include "kong.fullname" . }}-validation-webhook -{{- end -}} - - -{{/* -The name of the Service which will be used by the controller to update the Ingress status field. -*/}} - -{{- define "kong.controller-publish-service" -}} -{{- $proxyOverride := "" -}} - {{- if .Values.proxy.nameOverride -}} - {{- $proxyOverride = ( tpl .Values.proxy.nameOverride . ) -}} - {{- end -}} -{{- (printf "%s/%s" ( include "kong.namespace" . ) ( default ( printf "%s-proxy" (include "kong.fullname" . )) $proxyOverride )) -}} -{{- end -}} - -{{- define "kong.ingressController.env" -}} -{{/* - ====== AUTO-GENERATED ENVIRONMENT VARIABLES ====== -*/}} - - -{{- $autoEnv := dict -}} - {{- $_ := set $autoEnv "CONTROLLER_KONG_ADMIN_TLS_SKIP_VERIFY" true -}} - {{- $_ := set $autoEnv "CONTROLLER_PUBLISH_SERVICE" ( include "kong.controller-publish-service" . ) -}} - {{- $_ := set $autoEnv "CONTROLLER_INGRESS_CLASS" .Values.ingressController.ingressClass -}} - {{- $_ := set $autoEnv "CONTROLLER_ELECTION_ID" (printf "kong-ingress-controller-leader-%s" .Values.ingressController.ingressClass) -}} - - {{- if .Values.ingressController.admissionWebhook.enabled }} - {{- $address := (default "0.0.0.0" .Values.ingressController.admissionWebhook.address) -}} - {{- $_ := set $autoEnv "CONTROLLER_ADMISSION_WEBHOOK_LISTEN" (printf "%s:%d" $address (int64 .Values.ingressController.admissionWebhook.port)) -}} - {{- end }} - {{- if (not (eq (len .Values.ingressController.watchNamespaces) 0)) }} - {{- $_ := set $autoEnv "CONTROLLER_WATCH_NAMESPACE" (.Values.ingressController.watchNamespaces | join ",") -}} - {{- end }} - -{{/* - ====== ADMIN API CONFIGURATION ====== -*/}} - - {{- if .Values.ingressController.gatewayDiscovery.enabled -}} - {{- $_ := set $autoEnv "CONTROLLER_KONG_ADMIN_SVC" (include "kong.adminSvc" . ) -}} - {{- else -}} - {{- $_ := set $autoEnv "CONTROLLER_KONG_ADMIN_URL" (include "kong.adminLocalURL" .) -}} - {{- end -}} - - {{- if .Values.ingressController.adminApi.tls.client.enabled }} - {{- $_ := set $autoEnv "CONTROLLER_KONG_ADMIN_TLS_CLIENT_CERT_FILE" "/etc/secrets/admin-api-cert/tls.crt" -}} - {{- $_ := set $autoEnv "CONTROLLER_KONG_ADMIN_TLS_CLIENT_KEY_FILE" "/etc/secrets/admin-api-cert/tls.key" -}} - {{- end }} - -{{/* - ====== KONNECT ENVIRONMENT VARIABLES ====== -*/}} - -{{- if .Values.ingressController.konnect.enabled }} - {{- if (semverCompare "< 2.9.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} - {{- fail (printf "Konnect sync is available in controller versions 2.9 and up. Detected %s" (include "kong.effectiveVersion" .Values.ingressController.image)) }} - {{- end }} - - {{- if not .Values.ingressController.gatewayDiscovery.enabled }} - {{- fail "ingressController.gatewayDiscovery.enabled has to be true when ingressController.konnect.enabled"}} - {{- end }} - - {{- $konnect := .Values.ingressController.konnect -}} - - {{- if $konnect.controlPlaneID }} - {{- $_ = set $autoEnv "CONTROLLER_KONNECT_CONTROL_PLANE_ID" $konnect.controlPlaneID -}} - {{- else if $konnect.runtimeGroupID }} - {{- $_ = set $autoEnv "CONTROLLER_KONNECT_CONTROL_PLANE_ID" $konnect.runtimeGroupID -}} - {{- else }} - {{- fail "At least one of konnect.controlPlaneID or konnect.runtimeGroupID must be set." -}} - {{- end }} - - {{- $_ = set $autoEnv "CONTROLLER_KONNECT_SYNC_ENABLED" true -}} - {{- $_ = set $autoEnv "CONTROLLER_KONNECT_ADDRESS" (printf "https://%s" .Values.ingressController.konnect.apiHostname) -}} - - {{- $tlsCert := include "secretkeyref" (dict "name" $konnect.tlsClientCertSecretName "key" "tls.crt") -}} - {{- $tlsKey := include "secretkeyref" (dict "name" $konnect.tlsClientCertSecretName "key" "tls.key") -}} - {{- $_ = set $autoEnv "CONTROLLER_KONNECT_TLS_CLIENT_CERT" $tlsCert -}} - {{- $_ = set $autoEnv "CONTROLLER_KONNECT_TLS_CLIENT_KEY" $tlsKey -}} - - {{- if $konnect.license.enabled }} - {{- $_ = set $autoEnv "CONTROLLER_KONNECT_LICENSING_ENABLED" true -}} - {{- end }} -{{- end }} - -{{/* - ====== USER-SET ENVIRONMENT VARIABLES ====== -*/}} - -{{- $userEnv := dict -}} -{{- range $key, $val := .Values.ingressController.env }} - {{- $upper := upper $key -}} - {{- $var := printf "CONTROLLER_%s" $upper -}} - {{- $_ := set $userEnv $var $val -}} -{{- end -}} - -{{/* - ====== CUSTOM-SET INGRESS CONTROLLER ENVIRONMENT VARIABLES ====== -*/}} - -{{- $customIngressEnv := dict -}} -{{- range $key, $val := .Values.ingressController.customEnv }} - {{- $upper := upper $key -}} - {{- $_ := set $customIngressEnv $upper $val -}} -{{- end -}} - -{{/* - ====== MERGE AND RENDER ENV BLOCK ====== -*/}} - -{{- $completeEnv := mergeOverwrite $autoEnv $userEnv $customIngressEnv -}} -{{- template "kong.renderEnv" $completeEnv -}} - -{{- end -}} - -{{- define "kong.userDefinedVolumes" -}} -{{- if .Values.deployment.userDefinedVolumes }} -{{- toYaml .Values.deployment.userDefinedVolumes }} -{{- end }} -{{- end -}} - -{{- define "kong.volumes" -}} -- name: {{ template "kong.fullname" . }}-prefix-dir - emptyDir: - sizeLimit: {{ .Values.deployment.prefixDir.sizeLimit }} -- name: {{ template "kong.fullname" . }}-tmp - emptyDir: - sizeLimit: {{ .Values.deployment.tmpDir.sizeLimit }} -{{- if (and (not .Values.deployment.serviceAccount.automountServiceAccountToken) (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name)) }} -- name: {{ template "kong.serviceAccountTokenName" . }} - {{- /* Due to GKE versions (e.g. v1.23.15-gke.1900) we need to handle pre-release part of the version as well. - See the related documentation of semver module that Helm depends on for semverCompare: - https://github.com/Masterminds/semver#working-with-prerelease-versions - Related Helm issue: https://github.com/helm/helm/issues/3810 */}} - {{- if semverCompare ">=1.20.0-0" .Capabilities.KubeVersion.Version }} - projected: - sources: - - serviceAccountToken: - expirationSeconds: 3607 - path: token - - configMap: - items: - - key: ca.crt - path: ca.crt - name: kube-root-ca.crt - - downwardAPI: - items: - - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - path: namespace - {{- else }} - secret: - secretName: {{ template "kong.serviceAccountTokenName" . }} - items: - - key: token - path: token - - key: ca.crt - path: ca.crt - - key: namespace - path: namespace - {{- end }} -{{- end }} -{{- if and ( .Capabilities.APIVersions.Has "cert-manager.io/v1" ) .Values.certificates.enabled -}} -{{- if .Values.certificates.cluster.enabled }} -- name: {{ include "kong.fullname" . }}-cluster-cert - secret: - secretName: {{ include "kong.fullname" . }}-cluster-cert -{{- end }} -{{- if .Values.certificates.proxy.enabled }} -- name: {{ include "kong.fullname" . }}-proxy-cert - secret: - secretName: {{ include "kong.fullname" . }}-proxy-cert -{{- end }} -{{- if .Values.certificates.admin.enabled }} -- name: {{ include "kong.fullname" . }}-admin-cert - secret: - secretName: {{ include "kong.fullname" . }}-admin-cert -{{- end }} -{{- if .Values.enterprise.enabled }} -{{- if .Values.certificates.portal.enabled }} -- name: {{ include "kong.fullname" . }}-portal-cert - secret: - secretName: {{ include "kong.fullname" . }}-portal-cert -{{- end }} -{{- end }} -{{- end }} -{{- if (and (.Values.postgresql.enabled) .Values.waitImage.enabled) }} -- name: {{ template "kong.fullname" . }}-bash-wait-for-postgres - configMap: - name: {{ template "kong.fullname" . }}-bash-wait-for-postgres - defaultMode: 0755 -{{- end }} -{{- range .Values.plugins.configMaps }} -- name: kong-plugin-{{ .pluginName }} - configMap: - name: {{ .name }} -{{- range .subdirectories }} -- name: {{ .name }} - configMap: - name: {{ .name }} -{{- end }} -{{- end }} -{{- range .Values.plugins.secrets }} -- name: kong-plugin-{{ .pluginName }} - secret: - secretName: {{ .name }} -{{- range .subdirectories }} -- name: {{ .name }} - secret: - secretName: {{ .name }} -{{- end }} -{{- end }} - -{{- if (and (not .Values.ingressController.enabled) (eq .Values.env.database "off")) }} - {{- $dblessSourceCount := (add (.Values.dblessConfig.configMap | len | min 1) (.Values.dblessConfig.secret | len | min 1) (.Values.dblessConfig.config | len | min 1)) -}} - {{- if gt $dblessSourceCount 1 -}} - {{- fail "Ambiguous configuration: only one of of .Values.dblessConfig.configMap, .Values.dblessConfig.secret, and .Values.dblessConfig.config can be set." -}} - {{- else if eq $dblessSourceCount 1 }} -- name: kong-custom-dbless-config-volume - {{- if .Values.dblessConfig.configMap }} - configMap: - name: {{ .Values.dblessConfig.configMap }} - {{- else if .Values.dblessConfig.secret }} - secret: - secretName: {{ .Values.dblessConfig.secret }} - {{- else }} - configMap: - name: {{ template "kong.dblessConfig.fullname" . }} - {{- end }} - {{- end }} -{{- end }} - -{{- if and .Values.ingressController.enabled .Values.ingressController.admissionWebhook.enabled }} -- name: webhook-cert - secret: - {{- if .Values.ingressController.admissionWebhook.certificate.provided }} - secretName: {{ .Values.ingressController.admissionWebhook.certificate.secretName }} - {{- else }} - secretName: {{ template "kong.fullname" . }}-validation-webhook-keypair - {{- end }} -{{- end }} -{{- if or $.Values.admin.tls.client.secretName $.Values.admin.tls.client.caBundle }} -- name: admin-client-ca - configMap: - name: {{ template "kong.fullname" . }}-admin-client-ca -{{- end -}} -{{- range $secretVolume := .Values.secretVolumes }} -- name: {{ . }} - secret: - secretName: {{ . }} -{{- end }} -{{- range .Values.extraConfigMaps }} -- name: {{ .name }} - configMap: - name: {{ .name }} -{{- end }} -{{- range .Values.extraSecrets }} -- name: {{ .name }} - secret: - secretName: {{ .name }} -{{- end }} -{{- if and .Values.ingressController.adminApi.tls.client.enabled .Values.ingressController.enabled }} -- name: admin-api-cert - secret: - secretName: {{ template "adminApiService.certSecretName" . }} -{{- end }} -{{- end -}} - -{{- define "controller.adminApiCertVolumeMount" -}} -{{- if and .Values.ingressController.adminApi.tls.client.enabled .Values.ingressController.enabled }} -- name: admin-api-cert - mountPath: /etc/secrets/admin-api-cert - readOnly: true -{{- end -}} -{{- end -}} - -{{- define "kong.userDefinedVolumeMounts" -}} -{{- if .userDefinedVolumeMounts }} -{{- toYaml .userDefinedVolumeMounts }} -{{- end }} -{{- end -}} - -{{- define "kong.volumeMounts" -}} -- name: {{ template "kong.fullname" . }}-prefix-dir - mountPath: /kong_prefix/ -- name: {{ template "kong.fullname" . }}-tmp - mountPath: /tmp -{{- if and ( .Capabilities.APIVersions.Has "cert-manager.io/v1" ) .Values.certificates.enabled -}} -{{- if .Values.certificates.cluster.enabled }} -- name: {{ include "kong.fullname" . }}-cluster-cert - mountPath: /etc/cert-manager/cluster/ -{{- end }} -{{- if .Values.certificates.proxy.enabled }} -- name: {{ include "kong.fullname" . }}-proxy-cert - mountPath: /etc/cert-manager/proxy/ -{{- end }} -{{- if .Values.certificates.admin.enabled }} -- name: {{ include "kong.fullname" . }}-admin-cert - mountPath: /etc/cert-manager/admin/ -{{- end }} -{{- if .Values.enterprise.enabled }} -{{- if .Values.certificates.portal.enabled }} -- name: {{ include "kong.fullname" . }}-portal-cert - mountPath: /etc/cert-manager/portal/ -{{- end }} -{{- end }} -{{- end }} -{{- $dblessSourceCount := (add (.Values.dblessConfig.configMap | len | min 1) (.Values.dblessConfig.secret | len | min 1) (.Values.dblessConfig.config | len | min 1)) -}} - {{- if eq $dblessSourceCount 1 -}} - {{- if (and (not .Values.ingressController.enabled) (eq .Values.env.database "off")) }} -- name: kong-custom-dbless-config-volume - mountPath: /kong_dbless/ - {{- end }} - {{- end }} -{{- if or $.Values.admin.tls.client.caBundle $.Values.admin.tls.client.secretName }} -- name: admin-client-ca - mountPath: /etc/admin-client-ca/ - readOnly: true -{{- end -}} -{{- range .Values.secretVolumes }} -- name: {{ . }} - mountPath: /etc/secrets/{{ . }} -{{- end }} -{{- range .Values.plugins.configMaps }} -{{- $mountPath := printf "/opt/kong/plugins/%s" .pluginName }} -- name: kong-plugin-{{ .pluginName }} - mountPath: {{ $mountPath }} - readOnly: true -{{- range .subdirectories }} -- name: {{ .name }} - mountPath: {{ printf "%s/%s" $mountPath ( .path | default .name ) }} - readOnly: true -{{- end }} -{{- end }} -{{- range .Values.plugins.secrets }} -{{- $mountPath := printf "/opt/kong/plugins/%s" .pluginName }} -- name: kong-plugin-{{ .pluginName }} - mountPath: {{ $mountPath }} - readOnly: true -{{- range .subdirectories }} -- name: {{ .name }} - mountPath: {{ printf "%s/%s" $mountPath .path }} - readOnly: true -{{- end }} -{{- end }} - -{{- range .Values.extraConfigMaps }} -- name: {{ .name }} - mountPath: {{ .mountPath }} - - {{- if .subPath }} - subPath: {{ .subPath }} - {{- end }} -{{- end }} -{{- range .Values.extraSecrets }} -- name: {{ .name }} - mountPath: {{ .mountPath }} - - {{- if .subPath }} - subPath: {{ .subPath }} - {{- end }} -{{- end }} - -{{- end -}} - -{{- define "kong.plugins" -}} -{{ $myList := list "bundled" }} -{{- range .Values.plugins.configMaps -}} -{{- $myList = append $myList .pluginName -}} -{{- end -}} -{{- range .Values.plugins.secrets -}} - {{ $myList = append $myList .pluginName -}} -{{- end }} -{{- $myList | uniq | join "," -}} -{{- end -}} - -{{- define "kong.wait-for-db" -}} -- name: wait-for-db - image: {{ include "kong.getRepoTag" .Values.image }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - securityContext: - {{ toYaml .Values.containerSecurityContext | nindent 4 }} - env: - {{- include "kong.env" . | nindent 2 }} - {{- include "kong.envFrom" .Values.envFrom | nindent 2 }} -{{/* TODO the prefix override is to work around https://github.com/Kong/charts/issues/295 - Note that we use args instead of command here to /not/ override the standard image entrypoint. */}} - args: [ "/bin/bash", "-c", "export KONG_NGINX_DAEMON=on KONG_PREFIX=`mktemp -d` KONG_KEYRING_ENABLED=off; until kong start; do echo 'waiting for db'; sleep 1; done; kong stop"] - volumeMounts: - {{- include "kong.volumeMounts" . | nindent 4 }} - {{- include "kong.userDefinedVolumeMounts" .Values.deployment | nindent 4 }} - resources: - {{- toYaml .Values.resources | nindent 4 }} -{{- end -}} - -{{/* effectiveVersion takes an image dict from values.yaml. if .effectiveSemver is set, it returns that, else it returns .tag */}} -{{- define "kong.effectiveVersion" -}} -{{- /* Because Kong Gateway enterprise uses versions with 4 segments and not 3 */ -}} -{{- /* as semver does, we need to account for that here by extracting */ -}} -{{- /* first 3 segments for comparison */ -}} -{{- if .effectiveSemver -}} - {{- if regexMatch "^[0-9]+.[0-9]+.[0-9]+" .effectiveSemver -}} - {{- regexFind "^[0-9]+.[0-9]+.[0-9]+" .effectiveSemver -}} - {{- else -}} - {{- .effectiveSemver -}} - {{- end -}} -{{- else -}} - {{- $tag := (trimSuffix "-redhat" .tag) -}} - {{- if regexMatch "^[0-9]+.[0-9]+.[0-9]+" .tag -}} - {{- regexFind "^[0-9]+.[0-9]+.[0-9]+" .tag -}} - {{- else -}} - {{- .tag -}} - {{- end -}} -{{- end -}} -{{- end -}} - -{{- define "kong.controller-container" -}} -- name: ingress-controller - securityContext: -{{ toYaml .Values.containerSecurityContext | nindent 4 }} - args: - {{ if .Values.ingressController.args}} - {{- range $val := .Values.ingressController.args }} - - {{ $val }} - {{- end }} - {{- end }} - ports: - {{- if .Values.ingressController.admissionWebhook.enabled }} - - name: webhook - containerPort: {{ .Values.ingressController.admissionWebhook.port }} - protocol: TCP - {{- end }} - {{ if (semverCompare ">= 2.0.0" (include "kong.effectiveVersion" .Values.ingressController.image)) -}} - - name: cmetrics - containerPort: 10255 - protocol: TCP - {{- end }} - - name: cstatus - containerPort: 10254 - protocol: TCP - env: - - name: POD_NAME - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace -{{- include "kong.ingressController.env" . | indent 2 }} -{{ include "kong.envFrom" .Values.ingressController.envFrom | indent 2 }} - image: {{ include "kong.getRepoTag" .Values.ingressController.image }} - imagePullPolicy: {{ .Values.image.pullPolicy }} -{{/* disableReadiness is a hidden setting to drop this block entirely for use with a debugger - Helm value interpretation doesn't let you replace the default HTTP checks with any other - check type, and all HTTP checks freeze when a debugger pauses operation. - Setting disableReadiness to ANY value disables the probes. -*/}} -{{- if (not (hasKey .Values.ingressController "disableProbes")) }} - readinessProbe: -{{ toYaml .Values.ingressController.readinessProbe | indent 4 }} - livenessProbe: -{{ toYaml .Values.ingressController.livenessProbe | indent 4 }} -{{- end }} - resources: -{{ toYaml .Values.ingressController.resources | indent 4 }} - volumeMounts: -{{- if .Values.ingressController.admissionWebhook.enabled }} - - name: webhook-cert - mountPath: /admission-webhook - readOnly: true -{{- end }} -{{- if (and (not .Values.deployment.serviceAccount.automountServiceAccountToken) (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name)) }} - - name: {{ template "kong.serviceAccountTokenName" . }} - mountPath: /var/run/secrets/kubernetes.io/serviceaccount - readOnly: true -{{- end }} - {{- include "kong.userDefinedVolumeMounts" .Values.ingressController | nindent 2 }} - {{- include "controller.adminApiCertVolumeMount" . | nindent 2 }} -{{- end -}} - -{{- define "secretkeyref" -}} -valueFrom: - secretKeyRef: - name: {{ .name }} - key: {{ .key }} -{{- end -}} - -{{/* -Use the Pod security context defined in Values or set the UID by default -*/}} -{{- define "kong.podsecuritycontext" -}} -{{ .Values.securityContext | toYaml }} -{{- end -}} - -{{- define "kong.no_daemon_env" -}} -{{- template "kong.env" . }} -- name: KONG_NGINX_DAEMON - value: "off" -{{- end -}} - -{{/* -The environment values passed to Kong; this should come after all -the template that it itself is using form the above sections. -*/}} -{{- define "kong.env" -}} -{{/* - ====== AUTO-GENERATED ENVIRONMENT VARIABLES ====== -*/}} -{{- $autoEnv := dict -}} - -{{- $_ := set $autoEnv "KONG_LUA_PACKAGE_PATH" "/opt/?.lua;/opt/?/init.lua;;" -}} - -{{- $_ := set $autoEnv "KONG_PROXY_ACCESS_LOG" "/dev/stdout" -}} -{{- $_ := set $autoEnv "KONG_PROXY_STREAM_ACCESS_LOG" "/dev/stdout basic" -}} -{{- $_ := set $autoEnv "KONG_ADMIN_ACCESS_LOG" "/dev/stdout" -}} -{{- $_ := set $autoEnv "KONG_STATUS_ACCESS_LOG" "off" -}} -{{- $_ := set $autoEnv "KONG_PROXY_ERROR_LOG" "/dev/stderr" -}} -{{- $_ := set $autoEnv "KONG_PROXY_STREAM_ERROR_LOG" "/dev/stderr" -}} -{{- $_ := set $autoEnv "KONG_ADMIN_ERROR_LOG" "/dev/stderr" -}} -{{- $_ := set $autoEnv "KONG_STATUS_ERROR_LOG" "/dev/stderr" -}} - -{{- if .Values.ingressController.enabled -}} - {{- $_ := set $autoEnv "KONG_KIC" "on" -}} -{{- end -}} - -{{- with .Values.admin -}} - {{- $listenConfig := dict -}} - {{- $listenConfig := merge $listenConfig . -}} - {{- if (and (not (hasKey . "addresses")) (not .enabled)) -}} - {{- $_ := set $listenConfig "addresses" (list "127.0.0.1" "[::1]") -}} - {{- end -}} - {{- $_ := set $autoEnv "KONG_ADMIN_LISTEN" (include "kong.listen" $listenConfig) -}} - - {{- if or .tls.client.secretName .tls.client.caBundle -}} - {{- $_ := set $autoEnv "KONG_NGINX_ADMIN_SSL_VERIFY_CLIENT" "on" -}} - {{- $_ := set $autoEnv "KONG_NGINX_ADMIN_SSL_CLIENT_CERTIFICATE" "/etc/admin-client-ca/tls.crt" -}} - {{- end -}} - -{{- end -}} - -{{- if and ( .Capabilities.APIVersions.Has "cert-manager.io/v1" ) .Values.certificates.enabled -}} - {{- if (and .Values.certificates.cluster.enabled .Values.cluster.enabled) -}} - {{- $_ := set $autoEnv "KONG_CLUSTER_MTLS" "pki" -}} - {{- $_ := set $autoEnv "KONG_CLUSTER_SERVER_NAME" .Values.certificates.cluster.commonName -}} - {{- $_ := set $autoEnv "KONG_CLUSTER_CA_CERT" "/etc/cert-manager/cluster/ca.crt" -}} - {{- $_ := set $autoEnv "KONG_CLUSTER_CERT" "/etc/cert-manager/cluster/tls.crt" -}} - {{- $_ := set $autoEnv "KONG_CLUSTER_CERT_KEY" "/etc/cert-manager/cluster/tls.key" -}} - {{- end -}} - - {{- if .Values.certificates.proxy.enabled -}} - {{- $_ := set $autoEnv "KONG_SSL_CERT" "/etc/cert-manager/proxy/tls.crt" -}} - {{- $_ := set $autoEnv "KONG_SSL_CERT_KEY" "/etc/cert-manager/proxy/tls.key" -}} - {{- end -}} - - {{- if .Values.certificates.admin.enabled -}} - {{- $_ := set $autoEnv "KONG_ADMIN_SSL_CERT" "/etc/cert-manager/admin/tls.crt" -}} - {{- $_ := set $autoEnv "KONG_ADMIN_SSL_CERT_KEY" "/etc/cert-manager/admin/tls.key" -}} - {{- if .Values.enterprise.enabled }} - {{- $_ := set $autoEnv "KONG_ADMIN_GUI_SSL_CERT" "/etc/cert-manager/admin/tls.crt" -}} - {{- $_ := set $autoEnv "KONG_ADMIN_GUI_SSL_CERT_KEY" "/etc/cert-manager/admin/tls.key" -}} - {{- end -}} - {{- end -}} - - {{- if .Values.enterprise.enabled }} - {{- if .Values.certificates.portal.enabled -}} - {{- $_ := set $autoEnv "KONG_PORTAL_API_SSL_CERT" "/etc/cert-manager/portal/tls.crt" -}} - {{- $_ := set $autoEnv "KONG_PORTAL_API_SSL_CERT_KEY" "/etc/cert-manager/portal/tls.key" -}} - {{- $_ := set $autoEnv "KONG_PORTAL_GUI_SSL_CERT" "/etc/cert-manager/portal/tls.crt" -}} - {{- $_ := set $autoEnv "KONG_PORTAL_GUI_SSL_CERT_KEY" "/etc/cert-manager/portal/tls.key" -}} - {{- end -}} - {{- end -}} -{{- end -}} - -{{- if .Values.admin.ingress.enabled }} - {{- $_ := set $autoEnv "KONG_ADMIN_GUI_API_URL" (include "kong.ingress.serviceUrl" .Values.admin.ingress) -}} - {{- $_ := set $autoEnv "KONG_ADMIN_API_URI" (include "kong.ingress.serviceUrl" .Values.admin.ingress) -}} -{{- end -}} - -{{- $_ := set $autoEnv "KONG_PROXY_LISTEN" (include "kong.listen" .Values.proxy) -}} - -{{- $streamStrings := list -}} -{{- if .Values.proxy.enabled -}} - {{- $tcpStreamString := (include "kong.streamListen" .Values.proxy) -}} - {{- if (not (eq $tcpStreamString "")) -}} - {{- $streamStrings = (append $streamStrings $tcpStreamString) -}} - {{- end -}} -{{- end -}} -{{- if .Values.udpProxy.enabled -}} - {{- $udpStreamString := (include "kong.streamListen" .Values.udpProxy) -}} - {{- if (not (eq $udpStreamString "")) -}} - {{- $streamStrings = (append $streamStrings $udpStreamString) -}} - {{- end -}} -{{- end -}} -{{- $streamString := $streamStrings | join ", " -}} -{{- if (eq (len $streamString) 0) -}} - {{- $streamString = "off" -}} -{{- end -}} -{{- $_ := set $autoEnv "KONG_STREAM_LISTEN" $streamString -}} - -{{- $_ := set $autoEnv "KONG_STATUS_LISTEN" (include "kong.listen" .Values.status) -}} - -{{- if .Values.proxy.enabled -}} - {{- $_ := set $autoEnv "KONG_PORT_MAPS" (include "kong.port_maps" .Values.proxy) -}} -{{- end -}} - -{{- $_ := set $autoEnv "KONG_CLUSTER_LISTEN" (include "kong.listen" .Values.cluster) -}} - -{{- if .Values.enterprise.enabled }} - {{- $_ := set $autoEnv "KONG_PORTAL_API_ACCESS_LOG" "/dev/stdout" -}} - {{- $_ := set $autoEnv "KONG_PORTAL_GUI_ACCESS_LOG" "/dev/stdout" -}} - {{- $_ := set $autoEnv "KONG_ADMIN_GUI_ACCESS_LOG" "/dev/stdout" -}} - {{- $_ := set $autoEnv "KONG_PORTAL_API_ERROR_LOG" "/dev/stderr" -}} - {{- $_ := set $autoEnv "KONG_PORTAL_GUI_ERROR_LOG" "/dev/stderr" -}} - {{- $_ := set $autoEnv "KONG_ADMIN_GUI_ERROR_LOG" "/dev/stderr" -}} - - {{- $_ := set $autoEnv "KONG_ADMIN_GUI_LISTEN" (include "kong.listen" .Values.manager) -}} - {{- if .Values.manager.ingress.enabled }} - {{- $_ := set $autoEnv "KONG_ADMIN_GUI_URL" (include "kong.ingress.serviceUrl" .Values.manager.ingress) -}} - {{- end -}} - - {{- if not .Values.enterprise.vitals.enabled }} - {{- $_ := set $autoEnv "KONG_VITALS" "off" -}} - {{- end }} - {{- $_ := set $autoEnv "KONG_CLUSTER_TELEMETRY_LISTEN" (include "kong.listen" .Values.clustertelemetry) -}} - - {{- if .Values.enterprise.portal.enabled }} - {{- $_ := set $autoEnv "KONG_PORTAL" "on" -}} - {{- $_ := set $autoEnv "KONG_PORTAL_GUI_LISTEN" (include "kong.listen" .Values.portal) -}} - {{- $_ := set $autoEnv "KONG_PORTAL_API_LISTEN" (include "kong.listen" .Values.portalapi) -}} - - {{- if .Values.portal.ingress.enabled }} - {{- $_ := set $autoEnv "KONG_PORTAL_GUI_HOST" .Values.portal.ingress.hostname -}} - {{- if .Values.portal.ingress.tls }} - {{- $_ := set $autoEnv "KONG_PORTAL_GUI_PROTOCOL" "https" -}} - {{- else }} - {{- $_ := set $autoEnv "KONG_PORTAL_GUI_PROTOCOL" "http" -}} - {{- end }} - {{- end }} - - {{- if .Values.portalapi.ingress.enabled }} - {{- $_ := set $autoEnv "KONG_PORTAL_API_URL" (include "kong.ingress.serviceUrl" .Values.portalapi.ingress) -}} - {{- end }} - {{- end }} - - {{- if .Values.enterprise.rbac.enabled }} - {{- $_ := set $autoEnv "KONG_ENFORCE_RBAC" "on" -}} - {{- $_ := set $autoEnv "KONG_ADMIN_GUI_AUTH" .Values.enterprise.rbac.admin_gui_auth | default "basic-auth" -}} - - {{- if not (eq .Values.enterprise.rbac.admin_gui_auth "basic-auth") }} - {{- $guiAuthConf := include "secretkeyref" (dict "name" .Values.enterprise.rbac.admin_gui_auth_conf_secret "key" "admin_gui_auth_conf") -}} - {{- $_ := set $autoEnv "KONG_ADMIN_GUI_AUTH_CONF" $guiAuthConf -}} - {{- end }} - - {{/* - KONG_ADMIN_GUI_SESSION_CONF is required for Kong versions <3.6.0. - For >=3.6.0, when openid-connect is used as the admin_gui_auth, the session_conf_secret is not required. - https://docs.konghq.com/gateway/3.6.x/kong-manager/auth/oidc/migrate/ - */}} - {{- if or (not (eq .Values.enterprise.rbac.admin_gui_auth "openid-connect")) - (semverCompare "< 3.6.0" (include "kong.effectiveVersion" .Values.image)) - -}} - {{- $guiSessionConf := include "secretkeyref" (dict "name" .Values.enterprise.rbac.session_conf_secret "key" "admin_gui_session_conf") -}} - {{- $_ := set $autoEnv "KONG_ADMIN_GUI_SESSION_CONF" $guiSessionConf -}} - {{- end }} - {{- end }} - - {{- if .Values.enterprise.smtp.enabled }} - {{- $_ := set $autoEnv "KONG_SMTP_MOCK" "off" -}} - {{- $_ := set $autoEnv "KONG_PORTAL_EMAILS_FROM" .Values.enterprise.smtp.portal_emails_from -}} - {{- $_ := set $autoEnv "KONG_PORTAL_EMAILS_REPLY_TO" .Values.enterprise.smtp.portal_emails_reply_to -}} - {{- $_ := set $autoEnv "KONG_ADMIN_EMAILS_FROM" .Values.enterprise.smtp.admin_emails_from -}} - {{- $_ := set $autoEnv "KONG_ADMIN_EMAILS_REPLY_TO" .Values.enterprise.smtp.admin_emails_reply_to -}} - {{- $_ := set $autoEnv "KONG_SMTP_ADMIN_EMAILS" .Values.enterprise.smtp.smtp_admin_emails -}} - {{- $_ := set $autoEnv "KONG_SMTP_HOST" .Values.enterprise.smtp.smtp_host -}} - {{- $_ := set $autoEnv "KONG_SMTP_AUTH_TYPE" .Values.enterprise.smtp.smtp_auth_type -}} - {{- $_ := set $autoEnv "KONG_SMTP_SSL" .Values.enterprise.smtp.smtp_ssl -}} - {{- $_ := set $autoEnv "KONG_SMTP_PORT" .Values.enterprise.smtp.smtp_port -}} - {{- $_ := set $autoEnv "KONG_SMTP_STARTTLS" (quote .Values.enterprise.smtp.smtp_starttls) -}} - {{- if .Values.enterprise.smtp.auth.smtp_username }} - {{- $_ := set $autoEnv "KONG_SMTP_USERNAME" .Values.enterprise.smtp.auth.smtp_username -}} - {{- $smtpPassword := include "secretkeyref" (dict "name" .Values.enterprise.smtp.auth.smtp_password_secret "key" "smtp_password") -}} - {{- $_ := set $autoEnv "KONG_SMTP_PASSWORD" $smtpPassword -}} - {{- end }} - {{- else }} - {{- $_ := set $autoEnv "KONG_SMTP_MOCK" "on" -}} - {{- end }} - - {{- if .Values.enterprise.license_secret -}} - {{- $lic := include "secretkeyref" (dict "name" .Values.enterprise.license_secret "key" "license") -}} - {{- $_ := set $autoEnv "KONG_LICENSE_DATA" $lic -}} - {{- end }} - -{{- end }} {{/* End of the Enterprise settings block */}} - -{{- if .Values.postgresql.enabled }} - {{- $_ := set $autoEnv "KONG_PG_HOST" (include "kong.postgresql.fullname" .) -}} - {{- $_ := set $autoEnv "KONG_PG_PORT" .Values.postgresql.service.ports.postgresql -}} - {{- $pgPassword := include "secretkeyref" (dict "name" (include "kong.postgresql.fullname" .) "key" "password") -}} - - {{- $_ := set $autoEnv "KONG_PG_PASSWORD" $pgPassword -}} -{{- else if eq .Values.env.database "postgres" }} - {{- $_ := set $autoEnv "KONG_PG_PORT" "5432" }} -{{- end }} - -{{- if (and (not .Values.ingressController.enabled) (eq .Values.env.database "off")) }} -{{- $dblessSourceCount := (add (.Values.dblessConfig.configMap | len | min 1) (.Values.dblessConfig.secret | len | min 1) (.Values.dblessConfig.config | len | min 1)) -}} -{{- if eq $dblessSourceCount 1 -}} - {{- $_ := set $autoEnv "KONG_DECLARATIVE_CONFIG" "/kong_dbless/kong.yml" -}} -{{- end }} -{{- end }} - -{{- if (.Values.plugins) }} -{{- $_ := set $autoEnv "KONG_PLUGINS" (include "kong.plugins" .) -}} -{{- end }} - -{{/* - ====== USER-SET ENVIRONMENT VARIABLES ====== -*/}} - -{{- $userEnv := dict -}} -{{- range $key, $val := .Values.env }} - {{- if (contains "_log" $key) -}} - {{- if (eq (typeOf $val) "bool") -}} - {{- fail (printf "env.%s must use string 'off' to disable. Without quotes, YAML will coerce the value to a boolean and Kong will reject it" $key) -}} - {{- end -}} - {{- end -}} - {{- $upper := upper $key -}} - {{- $var := printf "KONG_%s" $upper -}} - {{- $_ := set $userEnv $var $val -}} -{{- end -}} - -{{/* - ====== CUSTOM-SET ENVIRONMENT VARIABLES ====== -*/}} - -{{- $customEnv := dict -}} -{{- range $key, $val := .Values.customEnv }} - {{- $upper := upper $key -}} - {{- $_ := set $customEnv $upper $val -}} -{{- end -}} - -{{/* - ====== MERGE AND RENDER ENV BLOCK ====== -*/}} - -{{- $completeEnv := mergeOverwrite $autoEnv $userEnv $customEnv -}} -{{- template "kong.renderEnv" $completeEnv -}} - -{{- end -}} - -{{/* -Given a dictionary of variable=value pairs, render a container env block. -Environment variables are sorted alphabetically -*/}} -{{- define "kong.renderEnv" -}} - -{{- $dict := . -}} - -{{- range keys . | sortAlpha }} -{{- $val := pluck . $dict | first -}} -{{- $valueType := printf "%T" $val -}} -{{ if eq $valueType "map[string]interface {}" }} -- name: {{ . }} -{{ toYaml $val | indent 2 -}} -{{- else if eq $valueType "string" }} -{{- if regexMatch "valueFrom" $val }} -- name: {{ . }} -{{ $val | indent 2 }} -{{- else }} -- name: {{ . }} - value: {{ $val | quote }} -{{- end }} -{{- else }} -- name: {{ . }} - value: {{ $val | quote }} -{{- end }} -{{- end -}} - -{{- end -}} - -{{- define "kong.wait-for-postgres" -}} -- name: wait-for-postgres -{{- if (or .Values.waitImage.unifiedRepoTag .Values.waitImage.repository) }} - image: {{ include "kong.getRepoTag" .Values.waitImage }} -{{- else }} {{/* default to the Kong image */}} - image: {{ include "kong.getRepoTag" .Values.image }} -{{- end }} - imagePullPolicy: {{ .Values.waitImage.pullPolicy }} - env: - {{- include "kong.no_daemon_env" . | nindent 2 }} - {{- include "kong.envFrom" .Values.envFrom | nindent 2 }} - command: [ "bash", "/wait_postgres/wait.sh" ] - volumeMounts: - - name: {{ template "kong.fullname" . }}-bash-wait-for-postgres - mountPath: /wait_postgres - resources: - {{- toYaml .Values.migrations.resources | nindent 4 }} -{{- end -}} - -{{- define "kong.deprecation-warnings" -}} - {{- $warnings := list -}} - {{- range $warning := . }} - {{- $warnings = append $warnings (wrap 80 (printf "WARNING: %s" $warning)) -}} - {{- $warnings = append $warnings "\n\n" -}} - {{- end -}} - {{- $warningString := ($warnings | join "") -}} - {{- $warningString -}} -{{- end -}} - -{{- define "kong.getRepoTag" -}} -{{- if .unifiedRepoTag }} -{{- .unifiedRepoTag }} -{{- else if .repository }} -{{- .repository }}:{{ .tag }} -{{- end -}} -{{- end -}} - -{{/* -kong.kubernetesRBACRoles outputs a static list of RBAC rules (the "rules" block -of a Role or ClusterRole) that provide the ingress controller access to the -Kubernetes namespace-scoped resources it uses to build Kong configuration. - -Collectively, these are built from: -kubectl kustomize github.com/kong/kubernetes-ingress-controller/config/rbac?ref=main -kubectl kustomize github.com/kong/kubernetes-ingress-controller/config/rbac/gateway?ref=main - -However, there is no way to generate the split between cluster and namespaced -role sets used in the charts. Updating these requires separating out cluster -resource roles into their separate templates. -*/}} -{{- define "kong.kubernetesRBACRules" -}} -{{- if (semverCompare ">= 3.4.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} -- apiGroups: - - "" - resources: - - configmaps - verbs: - - get - - list - - watch -{{- if or (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1alpha3") (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1alpha2") (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1beta1") (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1")}} -{{- end }} -- apiGroups: - - gateway.networking.k8s.io - resources: - - backendtlspolicies - verbs: - - get - - list - - watch -- apiGroups: - - gateway.networking.k8s.io - resources: - - backendtlspolicies/status - verbs: - - patch - - update -{{- end }} -{{- if (semverCompare ">= 3.2.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} -- apiGroups: - - configuration.konghq.com - resources: - - kongcustomentities - verbs: - - get - - list - - watch -- apiGroups: - - configuration.konghq.com - resources: - - kongcustomentities/status - verbs: - - get - - patch - - update -{{- end }} -{{- if and (semverCompare ">= 3.1.0" (include "kong.effectiveVersion" .Values.ingressController.image)) - (contains (print .Values.ingressController.env.feature_gates) "KongServiceFacade=true") }} -- apiGroups: - - incubator.ingress-controller.konghq.com - resources: - - kongservicefacades - verbs: - - get - - list - - watch -- apiGroups: - - incubator.ingress-controller.konghq.com - resources: - - kongservicefacades/status - verbs: - - get - - patch - - update -{{- end }} -{{- if (semverCompare ">= 3.0.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} -- apiGroups: - - configuration.konghq.com - resources: - - kongupstreampolicies - verbs: - - get - - list - - watch -- apiGroups: - - configuration.konghq.com - resources: - - kongupstreampolicies/status - verbs: - - get - - patch - - update -{{- end }} -{{- if (semverCompare ">= 2.11.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} -- apiGroups: - - configuration.konghq.com - resources: - - kongconsumergroups - verbs: - - get - - list - - watch -- apiGroups: - - configuration.konghq.com - resources: - - kongconsumergroups/status - verbs: - - get - - patch - - update -{{- end }} -{{- if (semverCompare "< 2.10.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} -- apiGroups: - - "" - resources: - - endpoints - verbs: - - list - - watch -{{- end }} -- apiGroups: - - "" - resources: - - events - verbs: - - create - - patch -- apiGroups: - - "" - resources: - - nodes - verbs: - - list - - watch -- apiGroups: - - "" - resources: - - pods - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - secrets - verbs: - - list - - watch -- apiGroups: - - "" - resources: - - services - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - services/status - verbs: - - get - - patch - - update -- apiGroups: - - configuration.konghq.com - resources: - - ingressclassparameterses - verbs: - - get - - list - - watch -- apiGroups: - - configuration.konghq.com - resources: - - kongconsumers - verbs: - - get - - list - - watch -- apiGroups: - - configuration.konghq.com - resources: - - kongconsumers/status - verbs: - - get - - patch - - update -- apiGroups: - - configuration.konghq.com - resources: - - kongingresses - verbs: - - get - - list - - watch -- apiGroups: - - configuration.konghq.com - resources: - - kongingresses/status - verbs: - - get - - patch - - update -- apiGroups: - - configuration.konghq.com - resources: - - kongplugins - verbs: - - get - - list - - watch -- apiGroups: - - configuration.konghq.com - resources: - - kongplugins/status - verbs: - - get - - patch - - update -- apiGroups: - - configuration.konghq.com - resources: - - tcpingresses - verbs: - - get - - list - - watch -- apiGroups: - - configuration.konghq.com - resources: - - tcpingresses/status - verbs: - - get - - patch - - update -- apiGroups: - - configuration.konghq.com - resources: - - udpingresses - verbs: - - get - - list - - watch -- apiGroups: - - configuration.konghq.com - resources: - - udpingresses/status - verbs: - - get - - patch - - update -- apiGroups: - - extensions - resources: - - ingresses - verbs: - - get - - list - - watch -- apiGroups: - - extensions - resources: - - ingresses/status - verbs: - - get - - patch - - update -{{- if or (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1alpha2") (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1beta1") (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1")}} -- apiGroups: - - gateway.networking.k8s.io - resources: - - gateways - verbs: - - get - - list - - update - - watch -- apiGroups: - - gateway.networking.k8s.io - resources: - - gateways/status - verbs: - - get - - update -- apiGroups: - - gateway.networking.k8s.io - resources: - - httproutes - verbs: - - get - - list - - watch -- apiGroups: - - gateway.networking.k8s.io - resources: - - httproutes/status - verbs: - - get - - update -- apiGroups: - - gateway.networking.k8s.io - resources: - - referencegrants - verbs: - - get - - list - - watch -- apiGroups: - - gateway.networking.k8s.io - resources: - - referencegrants/status - verbs: - - get -- apiGroups: - - gateway.networking.k8s.io - resources: - - tcproutes - verbs: - - get - - list - - watch -- apiGroups: - - gateway.networking.k8s.io - resources: - - tcproutes/status - verbs: - - get - - update -- apiGroups: - - gateway.networking.k8s.io - resources: - - tlsroutes - verbs: - - get - - list - - watch -- apiGroups: - - gateway.networking.k8s.io - resources: - - tlsroutes/status - verbs: - - get - - update -- apiGroups: - - gateway.networking.k8s.io - resources: - - udproutes - verbs: - - get - - list - - watch -- apiGroups: - - gateway.networking.k8s.io - resources: - - udproutes/status - verbs: - - get - - update -- apiGroups: - - gateway.networking.k8s.io - resources: - - grpcroutes - verbs: - - get - - list - - watch -- apiGroups: - - gateway.networking.k8s.io - resources: - - grpcroutes/status - verbs: - - get - - patch - - update -{{- end }} -{{- if (.Capabilities.APIVersions.Has "networking.internal.knative.dev/v1alpha1") }} -- apiGroups: - - networking.internal.knative.dev - resources: - - ingresses - verbs: - - get - - list - - watch -- apiGroups: - - networking.internal.knative.dev - resources: - - ingresses/status - verbs: - - get - - patch - - update -{{- end }} -- apiGroups: - - networking.k8s.io - resources: - - ingresses - verbs: - - get - - list - - watch -- apiGroups: - - networking.k8s.io - resources: - - ingresses/status - verbs: - - get - - patch - - update -- apiGroups: - - discovery.k8s.io - resources: - - endpointslices - verbs: - - get - - list - - watch -{{- end -}} - -{{/* -kong.kubernetesRBACClusterRoles outputs a static list of RBAC rules (the "rules" block -of a Role or ClusterRole) that provide the ingress controller access to the -Kubernetes Cluster-scoped resources it uses to build Kong configuration. -*/}} -{{- define "kong.kubernetesRBACClusterRules" -}} -{{- if (semverCompare ">= 3.1.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} -- apiGroups: - - configuration.konghq.com - resources: - - konglicenses - verbs: - - get - - list - - watch -- apiGroups: - - configuration.konghq.com - resources: - - konglicenses/status - verbs: - - get - - patch - - update -{{- end -}} -{{- if (semverCompare ">= 3.1.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} -- apiGroups: - - configuration.konghq.com - resources: - - kongvaults - verbs: - - get - - list - - watch -- apiGroups: - - configuration.konghq.com - resources: - - kongvaults/status - verbs: - - get - - patch - - update -{{- end }} -- apiGroups: - - configuration.konghq.com - resources: - - kongclusterplugins - verbs: - - get - - list - - watch -- apiGroups: - - configuration.konghq.com - resources: - - kongclusterplugins/status - verbs: - - get - - patch - - update -{{- if (semverCompare ">= 2.10.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - list - - watch -{{- end }} -{{- if or (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1alpha2") (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1beta1") (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1")}} -- apiGroups: - - gateway.networking.k8s.io - resources: - - gatewayclasses - verbs: - - get - - list - - watch -- apiGroups: - - gateway.networking.k8s.io - resources: - - gatewayclasses/status - verbs: - - get - - update -- apiGroups: - - "" - resources: - - namespaces - verbs: - - get - - list - - watch -{{- end }} -- apiGroups: - - networking.k8s.io - resources: - - ingressclasses - verbs: - - get - - list - - watch -{{- end -}} - -{{- define "kong.autoscalingVersion" -}} -{{- if (.Capabilities.APIVersions.Has "autoscaling/v2") -}} -autoscaling/v2 -{{- else if (.Capabilities.APIVersions.Has "autoscaling/v2beta2") -}} -autoscaling/v2beta2 -{{- else -}} -autoscaling/v1 -{{- end -}} -{{- end -}} - -{{- define "kong.policyVersion" -}} -{{- if (.Capabilities.APIVersions.Has "policy/v1beta1" ) -}} -policy/v1beta1 -{{- else -}} -{{- fail (printf "Cluster doesn't have policy/v1beta1 API." ) }} -{{- end -}} -{{- end -}} - -{{- define "kong.renderTpl" -}} - {{- if typeIs "string" .value }} -{{- tpl .value .context }} - {{- else }} -{{- tpl (.value | toYaml) .context }} - {{- end }} -{{- end -}} - -{{- define "kong.ingressVersion" -}} -{{- if (.Capabilities.APIVersions.Has "networking.k8s.io/v1") -}} -networking.k8s.io/v1 -{{- else if (.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1") -}} -networking.k8s.io/v1beta1 -{{- else -}} -extensions/v1beta1 -{{- end -}} -{{- end -}} - -{{- define "kong.proxy.compatibleReadiness" -}} -{{- $proxyReadiness := .Values.readinessProbe -}} -{{- if (or (semverCompare "< 3.3.0" (include "kong.effectiveVersion" .Values.image)) (and .Values.ingressController.enabled (semverCompare "< 2.11.0" (include "kong.effectiveVersion" .Values.ingressController.image)))) -}} - {{- if (eq $proxyReadiness.httpGet.path "/status/ready") -}} - {{- $_ := set $proxyReadiness.httpGet "path" "/status" -}} - {{- end -}} -{{- end -}} -{{- (toYaml $proxyReadiness) -}} -{{- end -}} - -{{- define "kong.envFrom" -}} - {{- if (gt (len .) 0) -}} -envFrom: -{{- toYaml . | nindent 2 -}} - {{- else -}} - {{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/templates/admission-webhook.yaml b/manifests/helm/kong/2.46.0/templates/admission-webhook.yaml deleted file mode 100644 index f340268..0000000 --- a/manifests/helm/kong/2.46.0/templates/admission-webhook.yaml +++ /dev/null @@ -1,274 +0,0 @@ -{{- if (and .Values.ingressController.admissionWebhook.enabled .Values.ingressController.enabled) }} -{{- $certCert := "" -}} -{{- $certKey := "" -}} -{{- $caCert := "" -}} -{{- $caKey := "" -}} -{{- if not .Values.ingressController.admissionWebhook.certificate.provided }} -{{- $cn := printf "%s.%s.svc" ( include "kong.service.validationWebhook" . ) ( include "kong.namespace" . ) -}} -{{- $ca := genCA "kong-admission-ca" 3650 -}} -{{- $cert := genSignedCert $cn nil (list $cn) 3650 $ca -}} -{{- $certCert = $cert.Cert -}} -{{- $certKey = $cert.Key -}} -{{- $caCert = $ca.Cert -}} -{{- $caKey = $ca.Key -}} - -{{- $caSecret := (lookup "v1" "Secret" (include "kong.namespace" .) (printf "%s-validation-webhook-ca-keypair" (include "kong.fullname" .))) -}} -{{- $certSecret := (lookup "v1" "Secret" (include "kong.namespace" .) (printf "%s-validation-webhook-keypair" (include "kong.fullname" .))) -}} -{{- if $certSecret }} -{{- $certCert = (b64dec (get $certSecret.data "tls.crt")) -}} -{{- $certKey = (b64dec (get $certSecret.data "tls.key")) -}} -{{- end }} -{{- if $caSecret }} -{{- $caCert = (b64dec (get $caSecret.data "tls.crt")) -}} -{{- $caKey = (b64dec (get $caSecret.data "tls.key")) -}} -{{- end }} -{{- end }} -kind: ValidatingWebhookConfiguration -{{- if .Capabilities.APIVersions.Has "admissionregistration.k8s.io/v1" }} -apiVersion: admissionregistration.k8s.io/v1 -{{- else }} -apiVersion: admissionregistration.k8s.io/v1beta1 -{{- end }} -metadata: - name: {{ template "kong.fullname" . }}-validations - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} - {{- if .Values.ingressController.admissionWebhook.annotations }} - annotations: - {{- range $key, $value := .Values.ingressController.admissionWebhook.annotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} - {{- end }} -webhooks: -- admissionReviewVersions: - - v1 - clientConfig: - {{- if not .Values.ingressController.admissionWebhook.certificate.provided }} - caBundle: {{ b64enc $caCert }} - {{- else }} - {{- if .Values.ingressController.admissionWebhook.certificate.caBundle }} - caBundle: {{ b64enc .Values.ingressController.admissionWebhook.certificate.caBundle }} - {{- end }} - {{- end }} - service: - name: {{ template "kong.service.validationWebhook" . }} - namespace: {{ template "kong.namespace" . }} - failurePolicy: {{ .Values.ingressController.admissionWebhook.failurePolicy }} - matchPolicy: {{ .Values.ingressController.admissionWebhook.matchPolicy }} - name: secrets.credentials.validation.ingress-controller.konghq.com - {{- with .Values.ingressController.admissionWebhook.namespaceSelector }} - namespaceSelector: - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.ingressController.admissionWebhook.timeoutSeconds }} - timeoutSeconds: {{ . }} - {{- end }} - objectSelector: - matchExpressions: - - key: "konghq.com/credential" - operator: "Exists" - {{- /* Do not validate Konnect credentials, these are targeted for KGO */}} - - key: "konghq.com/credential" - operator: "NotIn" - values: - - "konnect" - rules: - - apiGroups: - - "" - apiVersions: - - v1 - operations: - - CREATE - - UPDATE - resources: - - secrets - sideEffects: None -- admissionReviewVersions: - - v1 - clientConfig: - {{- if not .Values.ingressController.admissionWebhook.certificate.provided }} - caBundle: {{ b64enc $caCert }} - {{- else }} - {{- if .Values.ingressController.admissionWebhook.certificate.caBundle }} - caBundle: {{ b64enc .Values.ingressController.admissionWebhook.certificate.caBundle }} - {{- end }} - {{- end }} - service: - name: {{ template "kong.service.validationWebhook" . }} - namespace: {{ template "kong.namespace" . }} - failurePolicy: {{ .Values.ingressController.admissionWebhook.failurePolicy }} - matchPolicy: {{ .Values.ingressController.admissionWebhook.matchPolicy }} - name: secrets.plugins.validation.ingress-controller.konghq.com - {{- with .Values.ingressController.admissionWebhook.namespaceSelector }} - namespaceSelector: - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.ingressController.admissionWebhook.timeoutSeconds }} - timeoutSeconds: {{ . }} - {{- end }} - {{- if .Values.ingressController.admissionWebhook.filterSecrets }} - objectSelector: - matchExpressions: - - key: "konghq.com/validate" - operator: "Exists" - {{- /* Do not validate Konnect credentials, these are targeted for KGO */}} - - key: "konghq.com/credential" - operator: "NotIn" - values: - - "konnect" - {{- else }} - objectSelector: - matchExpressions: - - key: owner - operator: NotIn - values: - - helm - {{- /* Do not validate Konnect credentials, these are targeted for KGO */}} - - key: "konghq.com/credential" - operator: "NotIn" - values: - - "konnect" - {{- end }} - rules: - - apiGroups: - - "" - apiVersions: - - v1 - operations: - - CREATE - - UPDATE - resources: - - secrets - sideEffects: None -- name: validations.kong.konghq.com - matchPolicy: {{ .Values.ingressController.admissionWebhook.matchPolicy }} - {{- with .Values.ingressController.admissionWebhook.namespaceSelector }} - namespaceSelector: - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.ingressController.admissionWebhook.matchConditions }} - matchConditions: - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.ingressController.admissionWebhook.objectSelector }} - objectSelector: - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.ingressController.admissionWebhook.timeoutSeconds }} - timeoutSeconds: {{ . }} - {{- end }} - failurePolicy: {{ .Values.ingressController.admissionWebhook.failurePolicy }} - sideEffects: None - admissionReviewVersions: ["v1beta1"] - rules: - - apiGroups: - - configuration.konghq.com - apiVersions: - - '*' - operations: - - CREATE - - UPDATE - resources: - - kongconsumers - - kongplugins -{{- if (semverCompare ">= 2.0.4" (include "kong.effectiveVersion" .Values.ingressController.image)) }} - - kongclusterplugins -{{- end }} -{{- if (semverCompare ">= 2.8.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} - - kongingresses -{{- end }} -{{- if (semverCompare ">= 3.0.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} - - apiGroups: - - '' - apiVersions: - - 'v1' - operations: - - CREATE - - UPDATE - resources: - - services -{{- end }} -{{- if (semverCompare ">= 2.12.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} - - apiGroups: - - networking.k8s.io - apiVersions: - - 'v1' - operations: - - CREATE - - UPDATE - resources: - - ingresses - - apiGroups: - - gateway.networking.k8s.io - apiVersions: - - 'v1alpha2' - - 'v1beta1' -{{- if (semverCompare ">= 3.0.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} - - 'v1' -{{- end }} - operations: - - CREATE - - UPDATE - resources: - - gateways - - httproutes -{{- end }} - clientConfig: - {{- if not .Values.ingressController.admissionWebhook.certificate.provided }} - caBundle: {{ b64enc $caCert }} - {{- else }} - {{- if .Values.ingressController.admissionWebhook.certificate.caBundle }} - caBundle: {{ b64enc .Values.ingressController.admissionWebhook.certificate.caBundle }} - {{- end }} - {{- end }} - service: - name: {{ template "kong.service.validationWebhook" . }} - namespace: {{ template "kong.namespace" . }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kong.service.validationWebhook" . }} - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} - {{- if .Values.ingressController.admissionWebhook.service.labels }} - {{- toYaml .Values.ingressController.admissionWebhook.service.labels | nindent 4 }} - {{- end }} -spec: - ports: - - name: webhook - port: 443 - protocol: TCP - targetPort: webhook - selector: - {{- include "kong.metaLabels" . | nindent 4 }} - app.kubernetes.io/component: app -{{- if not .Values.ingressController.admissionWebhook.certificate.provided }} ---- -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "kong.fullname" . }}-validation-webhook-ca-keypair - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -type: kubernetes.io/tls -data: - tls.crt: {{ b64enc $caCert }} - tls.key: {{ b64enc $caKey }} ---- -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "kong.fullname" . }}-validation-webhook-keypair - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -type: kubernetes.io/tls -data: - tls.crt: {{ b64enc $certCert }} - tls.key: {{ b64enc $certKey }} -{{- end }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/templates/certificate.yaml b/manifests/helm/kong/2.46.0/templates/certificate.yaml deleted file mode 100644 index 7f0c21b..0000000 --- a/manifests/helm/kong/2.46.0/templates/certificate.yaml +++ /dev/null @@ -1,93 +0,0 @@ -{{- if and ( .Capabilities.APIVersions.Has "cert-manager.io/v1" ) .Values.certificates.enabled -}} - -{{- $genericCertificateConfig := dict -}} -{{- $_ := set $genericCertificateConfig "fullName" (include "kong.fullname" .) -}} -{{- $_ := set $genericCertificateConfig "namespace" (include "kong.namespace" .) -}} -{{- $_ := set $genericCertificateConfig "metaLabels" (include "kong.metaLabels" .) -}} -{{- $_ := set $genericCertificateConfig "globalIssuer" .Values.certificates.issuer -}} -{{- $_ := set $genericCertificateConfig "globalClusterIssuer" .Values.certificates.clusterIssuer -}} -{{- $_ := set $genericCertificateConfig "globalSubject" .Values.certificates.subject -}} -{{- $_ := set $genericCertificateConfig "globalPrivateKey" .Values.certificates.privateKey -}} -{{- $_ := set $genericCertificateConfig "defaultIssuer" (printf "%s-%s-%s" .Release.Name .Chart.Name "selfsigned-issuer") -}} - -{{- if .Values.certificates.admin.enabled }} -{{- $certificateConfig := mustMerge (mustDeepCopy $genericCertificateConfig) .Values.certificates.admin -}} -{{- $_ := set $certificateConfig "serviceName" "admin" -}} -{{- include "kong.certificate" $certificateConfig -}} -{{- end }} - -{{- if (and .Values.certificates.portal.enabled .Values.enterprise.enabled) }} -{{- $certificateConfig := mustMerge (mustDeepCopy $genericCertificateConfig) .Values.certificates.portal -}} -{{- $_ := set $certificateConfig "serviceName" "portal" -}} -{{- include "kong.certificate" $certificateConfig -}} -{{- end }} - -{{- if .Values.certificates.proxy.enabled }} -{{- $certificateConfig := mustMerge (mustDeepCopy $genericCertificateConfig) .Values.certificates.proxy -}} -{{- $_ := set $certificateConfig "serviceName" "proxy" -}} -{{- include "kong.certificate" $certificateConfig -}} -{{- end }} - -{{- if .Values.certificates.cluster.enabled }} -{{- $certificateConfig := dict -}} -{{- $certificateConfig = mustMerge (mustDeepCopy $genericCertificateConfig) .Values.certificates.cluster -}} -{{- $_ := set $certificateConfig "serviceName" "cluster" -}} -{{- include "kong.certificate" $certificateConfig -}} -{{- end }} - -{{- end }} - -{{- define "kong.certificate" }} ---- -apiVersion: cert-manager.io/v1 -kind: Certificate -metadata: - name: {{ .fullName }}-{{ .serviceName }} - namespace: {{ .namespace }} - labels: - {{- .metaLabels | nindent 4 }} -spec: - secretName: {{ .fullName }}-{{ .serviceName }}-cert - commonName: {{ .commonName }} - dnsNames: - {{- range (append .dnsNames .commonName) }} - - {{ . | quote }} - {{- end }} - renewBefore: 360h0m0s - duration: 2160h0m0s - {{ if .subject -}} - subject: - {{- toYaml .subject | nindent 4 }} - {{ else if .globalSubject -}} - subject: - {{- toYaml .globalSubject | nindent 4 }} - {{- end }} - {{ if .privateKey -}} - privateKey: - {{- toYaml .privateKey | nindent 4 }} - {{ else if .globalPrivateKey -}} - privateKey: - {{- toYaml .globalPrivateKey | nindent 4 }} - {{- end }} - {{ if .clusterIssuer -}} - issuerRef: - group: cert-manager.io - name: {{ .clusterIssuer }} - kind: ClusterIssuer - {{ else if .issuer -}} - issuerRef: - group: cert-manager.io - name: {{ .issuer }} - kind: Issuer - {{ else if .globalClusterIssuer -}} - issuerRef: - group: cert-manager.io - name: {{ .globalClusterIssuer}} - kind: ClusterIssuer - {{ else if .globalIssuer -}} - issuerRef: - group: cert-manager.io - name: {{ .globalIssuer }} - kind: Issuer - {{- end -}} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/templates/config-dbless.yaml b/manifests/helm/kong/2.46.0/templates/config-dbless.yaml deleted file mode 100644 index 5619b59..0000000 --- a/manifests/helm/kong/2.46.0/templates/config-dbless.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.deployment.kong.enabled }} -{{- if (and (not .Values.ingressController.enabled) (eq .Values.env.database "off")) }} -{{- if not (or .Values.dblessConfig.configMap .Values.dblessConfig.secret) }} -{{- if .Values.dblessConfig.config }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "kong.dblessConfig.fullname" . }} - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -data: - kong.yml: | {{- .Values.dblessConfig.config | nindent 4 }} -{{- end }} -{{- end }} -{{- end }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/templates/controller-rbac-resources.yaml b/manifests/helm/kong/2.46.0/templates/controller-rbac-resources.yaml deleted file mode 100644 index f5873f0..0000000 --- a/manifests/helm/kong/2.46.0/templates/controller-rbac-resources.yaml +++ /dev/null @@ -1,170 +0,0 @@ -{{- if and .Values.ingressController.rbac.create .Values.ingressController.enabled -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ template "kong.fullname" . }} - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -rules: - - apiGroups: - - "" - resources: - - configmaps - - pods - - secrets - - namespaces - verbs: - - get - - apiGroups: - - "" - resources: - - configmaps - resourceNames: - # Defaults to "-" - # Here: "-" - # This has to be adapted if you change either parameter - # when launching the nginx-ingress-controller. - - "kong-ingress-controller-leader-{{ .Values.ingressController.ingressClass }}-{{ .Values.ingressController.ingressClass }}" - verbs: - - get - - update - - apiGroups: - - "" - resources: - - configmaps - verbs: - - create -{{- if (semverCompare "< 2.10.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} - - apiGroups: - - "" - resources: - - endpoints - verbs: - - get -{{- end }} - # Begin KIC 2.x leader permissions - - apiGroups: - - "" - - coordination.k8s.io - resources: - - configmaps - - leases - verbs: - - get - - list - - watch - - create - - update - - patch - - delete - - apiGroups: - - "" - resources: - - events - verbs: - - create - - patch - - apiGroups: - - "" - resources: - - services - verbs: - - get ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ template "kong.fullname" . }} - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "kong.fullname" . }} -subjects: - - kind: ServiceAccount - name: {{ template "kong.serviceAccountName" . }} - namespace: {{ template "kong.namespace" . }} -{{- if eq (len .Values.ingressController.watchNamespaces) 0 }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - {{- include "kong.metaLabels" . | nindent 4 }} - name: {{ template "kong.fullname" . }} -rules: -{{ include "kong.kubernetesRBACRules" . }} -{{ include "kong.kubernetesRBACClusterRules" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "kong.fullname" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "kong.fullname" . }} -subjects: - - kind: ServiceAccount - name: {{ template "kong.serviceAccountName" . }} - namespace: {{ template "kong.namespace" . }} -{{- else }} -{{- range .Values.ingressController.watchNamespaces }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - labels: - {{- include "kong.metaLabels" $ | nindent 4 }} - name: {{ template "kong.fullname" $ }}-{{ . }} - namespace: {{ . }} -rules: -{{ include "kong.kubernetesRBACRules" $ }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ template "kong.fullname" $ }}-{{ . }} - labels: - {{- include "kong.metaLabels" $ | nindent 4 }} - namespace: {{ . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "kong.fullname" $ }}-{{ . }} -subjects: - - kind: ServiceAccount - name: {{ template "kong.serviceAccountName" $ }} - namespace: {{ template "kong.namespace" $ }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - {{- include "kong.metaLabels" . | nindent 4 }} - name: {{ template "kong.fullname" . }} -rules: -{{ include "kong.kubernetesRBACClusterRules" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "kong.fullname" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "kong.fullname" . }} -subjects: - - kind: ServiceAccount - name: {{ template "kong.serviceAccountName" . }} - namespace: {{ template "kong.namespace" . }} -{{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/templates/controller-service-metrics.yaml b/manifests/helm/kong/2.46.0/templates/controller-service-metrics.yaml deleted file mode 100644 index 0722696..0000000 --- a/manifests/helm/kong/2.46.0/templates/controller-service-metrics.yaml +++ /dev/null @@ -1,25 +0,0 @@ -{{- if and .Values.ingressController.enabled (semverCompare ">= 2.0.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kong.fullname" . }}-metrics - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} - {{- if .Values.ingressController.labels }} - {{- toYaml .Values.ingressController.labels | nindent 4 }} - {{- end }} -spec: - ports: - - name: cmetrics - port: 10255 - protocol: TCP - targetPort: cmetrics - - name: status - port: 10254 - protocol: TCP - targetPort: cstatus - selector: - {{- include "kong.metaLabels" . | nindent 4 }} - app.kubernetes.io/component: app -{{- end }} diff --git a/manifests/helm/kong/2.46.0/templates/custom-resource-definitions.yaml b/manifests/helm/kong/2.46.0/templates/custom-resource-definitions.yaml deleted file mode 100644 index 5a6dda1..0000000 --- a/manifests/helm/kong/2.46.0/templates/custom-resource-definitions.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- $installCRDs := false -}} -{{- if (hasKey .Values.ingressController "installCRDs") -}} - {{/* Explicitly set, honor whatever's set */}} - {{- $installCRDs = .Values.ingressController.installCRDs -}} -{{- else -}} - {{/* Legacy default handling. CRD installation is _not_ enabled, but CRDs are already present - and are managed by this release. This release previously relied on the <2.0 default - .Values.ingressController.installCRDs=true. The default change would delete CRDs on upgrade, - which would cascade delete all associated CRs. This unexpected loss of configuration is bad, - so this clause pretends the default didn't change if you have an existing release that relied - on it - */}} - {{- $kongPluginCRD := false -}} - {{- if .Capabilities.APIVersions.Has "apiextensions.k8s.io/v1/CustomResourceDefinition" -}} - {{- $kongPluginCRD = (lookup "apiextensions.k8s.io/v1" "CustomResourceDefinition" "" "kongplugins.configuration.konghq.com") -}} - {{- else -}} - {{/* TODO: remove the v1beta1 path when we no longer support k8s <1.16 */}} - {{- $kongPluginCRD = (lookup "apiextensions.k8s.io/v1beta1" "CustomResourceDefinition" "" "kongplugins.configuration.konghq.com") -}} - {{- end -}} - {{- if $kongPluginCRD -}} - {{- if (hasKey $kongPluginCRD.metadata "annotations") -}} - {{- if (eq .Release.Name (get $kongPluginCRD.metadata.annotations "meta.helm.sh/release-name")) -}} - {{- $installCRDs = true -}} - {{- end -}} - {{- end -}} - {{- end -}} -{{- end -}} - -{{- if $installCRDs -}} -{{- range $path, $bytes := .Files.Glob "crds/*.yaml" }} -{{ $.Files.Get $path }} ---- -{{- end }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/templates/deployment.yaml b/manifests/helm/kong/2.46.0/templates/deployment.yaml deleted file mode 100644 index 0e2ec01..0000000 --- a/manifests/helm/kong/2.46.0/templates/deployment.yaml +++ /dev/null @@ -1,314 +0,0 @@ -{{- if or .Values.deployment.kong.enabled .Values.ingressController.enabled }} -apiVersion: apps/v1 -{{- if .Values.deployment.daemonset }} -kind: DaemonSet -{{- else }} -kind: Deployment -{{- end }} -metadata: - name: {{ template "kong.fullname" . }} - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} - app.kubernetes.io/component: app - {{- if .Values.deploymentAnnotations }} - annotations: - {{- range $key, $value := .Values.deploymentAnnotations }} - {{ $key }}: {{ include "kong.renderTpl" (dict "value" $value "context" $) | quote }} - {{- end }} - {{- end }} -spec: - {{- if not .Values.autoscaling.enabled }} - {{- if not .Values.deployment.daemonset }} - replicas: {{ .Values.replicaCount }} - {{- end }} - {{- end }} - {{- if .Values.deployment.revisionHistoryLimit }} - revisionHistoryLimit: {{ .Values.deployment.revisionHistoryLimit }} - {{- end }} - selector: - matchLabels: - {{- include "kong.selectorLabels" . | nindent 6 }} - {{- if .Values.updateStrategy }} - {{- if .Values.deployment.daemonset }} - updateStrategy: - {{- else }} - strategy: - {{- end }} -{{ toYaml .Values.updateStrategy | indent 4 }} - {{- end }} - {{- if .Values.deployment.minReadySeconds }} - minReadySeconds: {{ .Values.deployment.minReadySeconds }} - {{- end }} - - template: - metadata: - annotations: - {{- if (and (not .Values.deployment.serviceAccount.automountServiceAccountToken) (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name)) }} - kuma.io/service-account-token-volume: {{ template "kong.serviceAccountTokenName" . }} - {{- end }} - {{- if (and (not .Values.ingressController.enabled) (eq .Values.env.database "off" )) }} - {{- if .Values.dblessConfig.config }} - checksum/dbless.config: {{ toYaml .Values.dblessConfig.config | sha256sum }} - {{- end }} - {{- end }} - {{- if .Values.podAnnotations }} - {{- range $key, $value := .Values.podAnnotations }} - {{ $key }}: {{ include "kong.renderTpl" (dict "value" $value "context" $) | quote }} - {{- end }} - {{- end }} - labels: - {{- include "kong.metaLabels" . | nindent 8 }} - app.kubernetes.io/component: app - app: {{ template "kong.fullname" . }} - {{ $version := semver (include "kong.effectiveVersion" .Values.image) }} - version: {{ printf "%d.%d" $version.Major $version.Minor | quote }} - {{- if .Values.podLabels }} - {{ include "kong.renderTpl" (dict "value" .Values.podLabels "context" $) | nindent 8 }} - {{- end }} - spec: - {{- if .Values.deployment.hostname }} - hostname: {{ .Values.deployment.hostname }} - {{- end }} - {{- if .Values.deployment.hostNetwork }} - hostNetwork: true - {{- end }} - {{- if .Values.priorityClassName }} - priorityClassName: "{{ .Values.priorityClassName }}" - {{- end }} - {{- if or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name }} - serviceAccountName: {{ template "kong.serviceAccountName" . }} - {{- end }} - {{- if (and (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name) .Values.deployment.serviceAccount.automountServiceAccountToken) }} - automountServiceAccountToken: true - {{- else }} - automountServiceAccountToken: false - {{ end }} - {{- if .Values.image.pullSecrets }} - imagePullSecrets: - {{- range .Values.image.pullSecrets }} - - name: {{ . }} - {{- end }} - {{- end }} - {{- if .Values.deployment.kong.enabled }} - initContainers: - - name: clear-stale-pid - image: {{ include "kong.getRepoTag" .Values.image }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - securityContext: - {{ toYaml .Values.containerSecurityContext | nindent 10 }} - resources: -{{ toYaml .Values.resources | indent 10 }} - command: - - "rm" - - "-vrf" - - "$KONG_PREFIX/pids" - env: - {{- include "kong.env" . | nindent 8 }} - {{- include "kong.envFrom" .Values.envFrom | nindent 8 }} - volumeMounts: - {{- include "kong.volumeMounts" . | nindent 8 }} - {{- if .Values.deployment.initContainers }} - {{- toYaml .Values.deployment.initContainers | nindent 6 }} - {{- end }} - {{- if (and (not (eq .Values.env.database "off")) .Values.waitImage.enabled) }} - {{- include "kong.wait-for-db" . | nindent 6 }} - {{- end }} - {{- end }} - {{- if .Values.deployment.hostAliases }} - hostAliases: - {{- toYaml .Values.deployment.hostAliases | nindent 6 }} - {{- end}} - {{- if .Values.dnsPolicy }} - dnsPolicy: {{ .Values.dnsPolicy | quote }} - {{- end }} - {{- if .Values.dnsConfig }} - dnsConfig: -{{ toYaml .Values.dnsConfig | indent 8 }} - {{- end }} - containers: - {{- if .Values.ingressController.enabled }} - {{- include "kong.controller-container" . | nindent 6 }} - {{ end }} - {{- if .Values.deployment.sidecarContainers }} - {{- toYaml .Values.deployment.sidecarContainers | nindent 6 }} - {{- end }} - {{- if .Values.deployment.kong.enabled }} - - name: "proxy" - image: {{ include "kong.getRepoTag" .Values.image }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - securityContext: - {{ toYaml .Values.containerSecurityContext | nindent 10 }} - env: - {{- include "kong.no_daemon_env" . | nindent 8 }} - {{- include "kong.envFrom" .Values.envFrom | nindent 8 }} - lifecycle: - {{- toYaml .Values.lifecycle | nindent 10 }} - ports: - {{- if (and .Values.admin.http.enabled .Values.admin.enabled) }} - - name: admin - containerPort: {{ .Values.admin.http.containerPort }} - {{- if .Values.admin.http.hostPort }} - hostPort: {{ .Values.admin.http.hostPort }} - {{- end}} - protocol: TCP - {{- end }} - {{- if (and .Values.admin.tls.enabled .Values.admin.enabled) }} - - name: admin-tls - containerPort: {{ .Values.admin.tls.containerPort }} - {{- if .Values.admin.tls.hostPort }} - hostPort: {{ .Values.admin.tls.hostPort }} - {{- end}} - protocol: TCP - {{- end }} - {{- if (and .Values.proxy.http.enabled .Values.proxy.enabled) }} - - name: proxy - containerPort: {{ .Values.proxy.http.containerPort }} - {{- if .Values.proxy.http.hostPort }} - hostPort: {{ .Values.proxy.http.hostPort }} - {{- end}} - protocol: TCP - {{- end }} - {{- if (and .Values.proxy.tls.enabled .Values.proxy.enabled)}} - - name: proxy-tls - containerPort: {{ .Values.proxy.tls.containerPort }} - {{- if .Values.proxy.tls.hostPort }} - hostPort: {{ .Values.proxy.tls.hostPort }} - {{- end}} - protocol: TCP - {{- end }} - {{- range .Values.proxy.stream }} - - name: stream{{ if (eq (default "TCP" .protocol) "UDP") }}udp{{ end }}-{{ .containerPort }} - containerPort: {{ .containerPort }} - {{- if .hostPort }} - hostPort: {{ .hostPort }} - {{- end}} - protocol: {{ .protocol }} - {{- end }} - {{- range .Values.udpProxy.stream }} - - name: streamudp-{{ .containerPort }} - containerPort: {{ .containerPort }} - {{- if .hostPort }} - hostPort: {{ .hostPort }} - {{- end}} - protocol: {{ .protocol }} - {{- end }} - {{- if (and .Values.status.http.enabled .Values.status.enabled)}} - - name: status - containerPort: {{ .Values.status.http.containerPort }} - {{- if .Values.status.http.hostPort }} - hostPort: {{ .Values.status.http.hostPort }} - {{- end}} - protocol: TCP - {{- end }} - {{- if (and .Values.status.tls.enabled .Values.status.enabled) }} - - name: status-tls - containerPort: {{ .Values.status.tls.containerPort }} - {{- if .Values.status.tls.hostPort }} - hostPort: {{ .Values.status.tls.hostPort }} - {{- end}} - protocol: TCP - {{- end }} - {{- if (and .Values.cluster.tls.enabled .Values.cluster.enabled) }} - - name: cluster-tls - containerPort: {{ .Values.cluster.tls.containerPort }} - {{- if .Values.cluster.tls.hostPort }} - hostPort: {{ .Values.cluster.tls.hostPort }} - {{- end}} - protocol: TCP - {{- end }} - {{- if .Values.enterprise.enabled }} - {{- if (and .Values.manager.http.enabled .Values.manager.enabled) }} - - name: manager - containerPort: {{ .Values.manager.http.containerPort }} - {{- if .Values.manager.http.hostPort }} - hostPort: {{ .Values.manager.http.hostPort }} - {{- end}} - protocol: TCP - {{- end }} - {{- if (and .Values.manager.tls.enabled .Values.manager.enabled) }} - - name: manager-tls - containerPort: {{ .Values.manager.tls.containerPort }} - {{- if .Values.manager.tls.hostPort }} - hostPort: {{ .Values.manager.tls.hostPort }} - {{- end}} - protocol: TCP - {{- end }} - {{- if (and .Values.portal.http.enabled .Values.portal.enabled) }} - - name: portal - containerPort: {{ .Values.portal.http.containerPort }} - {{- if .Values.portal.http.hostPort }} - hostPort: {{ .Values.portal.http.hostPort }} - {{- end}} - protocol: TCP - {{- end }} - {{- if (and .Values.portal.tls.enabled .Values.portal.enabled) }} - - name: portal-tls - containerPort: {{ .Values.portal.tls.containerPort }} - {{- if .Values.portal.tls.hostPort }} - hostPort: {{ .Values.portal.tls.hostPort }} - {{- end}} - protocol: TCP - {{- end }} - {{- if (and .Values.portalapi.http.enabled .Values.portalapi.enabled) }} - - name: portalapi - containerPort: {{ .Values.portalapi.http.containerPort }} - {{- if .Values.portalapi.http.hostPort }} - hostPort: {{ .Values.portalapi.http.hostPort }} - {{- end}} - protocol: TCP - {{- end }} - {{- if (and .Values.portalapi.tls.enabled .Values.portalapi.enabled) }} - - name: portalapi-tls - containerPort: {{ .Values.portalapi.tls.containerPort }} - {{- if .Values.portalapi.tls.hostPort }} - hostPort: {{ .Values.portalapi.tls.hostPort }} - {{- end}} - protocol: TCP - {{- end }} - {{- if (and .Values.clustertelemetry.tls.enabled .Values.clustertelemetry.enabled) }} - - name: clustert-tls - containerPort: {{ .Values.clustertelemetry.tls.containerPort }} - {{- if .Values.clustertelemetry.tls.hostPort }} - hostPort: {{ .Values.clustertelemetry.tls.hostPort }} - {{- end}} - protocol: TCP - {{- end }} - {{- end }} - volumeMounts: - {{- include "kong.volumeMounts" . | nindent 10 }} - {{- include "kong.userDefinedVolumeMounts" .Values.deployment | nindent 10 }} - readinessProbe: -{{ include "kong.proxy.compatibleReadiness" . | indent 10 }} - livenessProbe: -{{ toYaml .Values.livenessProbe | indent 10 }} - {{- if .Values.startupProbe }} - startupProbe: -{{ toYaml .Values.startupProbe | indent 10 }} - {{- end }} - resources: -{{ toYaml .Values.resources | indent 10 }} - {{- end }} {{/* End of Kong container spec */}} - {{- if .Values.affinity }} - affinity: -{{ toYaml .Values.affinity | indent 8 }} - {{- end }} - {{- if .Values.topologySpreadConstraints }} - topologySpreadConstraints: -{{ toYaml .Values.topologySpreadConstraints | indent 8 }} - {{- end }} - securityContext: - {{- include "kong.podsecuritycontext" . | nindent 8 }} - {{- if .Values.nodeSelector }} - nodeSelector: -{{ toYaml .Values.nodeSelector | indent 8 }} - {{- end }} - terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }} - {{- if .Values.tolerations }} - tolerations: -{{ toYaml .Values.tolerations | indent 8 }} - {{- end }} - volumes: - {{- include "kong.volumes" . | nindent 8 -}} - {{- include "kong.userDefinedVolumes" . | nindent 8 -}} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/templates/extraManifests.yaml b/manifests/helm/kong/2.46.0/templates/extraManifests.yaml deleted file mode 100644 index a9bb3b6..0000000 --- a/manifests/helm/kong/2.46.0/templates/extraManifests.yaml +++ /dev/null @@ -1,4 +0,0 @@ -{{ range .Values.extraObjects }} ---- -{{ tpl (toYaml .) $ }} -{{ end }} diff --git a/manifests/helm/kong/2.46.0/templates/hpa.yaml b/manifests/helm/kong/2.46.0/templates/hpa.yaml deleted file mode 100644 index 922ade8..0000000 --- a/manifests/helm/kong/2.46.0/templates/hpa.yaml +++ /dev/null @@ -1,26 +0,0 @@ -{{- if .Values.autoscaling.enabled }} -apiVersion: {{ include "kong.autoscalingVersion" . }} -kind: HorizontalPodAutoscaler -metadata: - name: "{{ template "kong.fullname" . }}" - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: "{{ template "kong.fullname" . }}" - minReplicas: {{ .Values.autoscaling.minReplicas }} - maxReplicas: {{ .Values.autoscaling.maxReplicas }} - {{- if .Values.autoscaling.behavior }} - behavior: - {{- toYaml .Values.autoscaling.behavior | nindent 4 }} - {{- end }} - {{- if contains "autoscaling/v2" (include "kong.autoscalingVersion" . ) }} - metrics: - {{- toYaml .Values.autoscaling.metrics | nindent 4 }} - {{- else }} - targetCPUUtilizationPercentage: {{ .Values.autoscaling.targetCPUUtilizationPercentage | default 80 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/templates/ingress-class.yaml b/manifests/helm/kong/2.46.0/templates/ingress-class.yaml deleted file mode 100644 index d2ac47d..0000000 --- a/manifests/helm/kong/2.46.0/templates/ingress-class.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{/* Default to not managing if unsupported or created outside this chart */}} -{{- $includeIngressClass := false -}} -{{- if .Values.ingressController.enabled -}} - {{- if (.Capabilities.APIVersions.Has "networking.k8s.io/v1/IngressClass") -}} - {{- with (lookup "networking.k8s.io/v1" "IngressClass" "" .Values.ingressController.ingressClass) -}} - {{- if (hasKey .metadata "annotations") -}} - {{- if (eq $.Release.Name (get .metadata.annotations "meta.helm.sh/release-name")) -}} - {{/* IngressClass exists and is managed by this chart */}} - {{- $includeIngressClass = true -}} - {{- end -}} - {{- end -}} - {{- else -}} - {{/* IngressClass doesn't exist */}} - {{- $includeIngressClass = true -}} - {{- end -}} - {{- end -}} -{{- end -}} -{{- if $includeIngressClass -}} -apiVersion: networking.k8s.io/v1 -kind: IngressClass -metadata: - name: {{ .Values.ingressController.ingressClass }} - {{- if .Values.ingressController.ingressClassAnnotations }} - annotations: - {{- range $key, $value := .Values.ingressController.ingressClassAnnotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} - {{- end }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -spec: - controller: ingress-controllers.konghq.com/kong -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/templates/migrations-post-upgrade.yaml b/manifests/helm/kong/2.46.0/templates/migrations-post-upgrade.yaml deleted file mode 100644 index e537170..0000000 --- a/manifests/helm/kong/2.46.0/templates/migrations-post-upgrade.yaml +++ /dev/null @@ -1,100 +0,0 @@ -{{- if .Values.deployment.kong.enabled }} -{{- if (and .Values.migrations.postUpgrade (not (eq .Values.env.database "off"))) }} -# Why is this Job duplicated and not using only helm hooks? -# See: https://github.com/helm/charts/pull/7362 -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ template "kong.fullname" . }}-post-upgrade-migrations - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} - app.kubernetes.io/component: post-upgrade-migrations - annotations: - helm.sh/hook: "post-upgrade" - helm.sh/hook-delete-policy: "before-hook-creation" - {{- range $key, $value := .Values.migrations.jobAnnotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} -spec: - backoffLimit: {{ .Values.migrations.backoffLimit }} - {{- if .Values.migrations.ttlSecondsAfterFinished }} - ttlSecondsAfterFinished: {{ .Values.migrations.ttlSecondsAfterFinished }} - {{- end }} - template: - metadata: - name: {{ template "kong.name" . }}-post-upgrade-migrations - labels: - {{- include "kong.metaLabels" . | nindent 8 }} - app.kubernetes.io/component: post-upgrade-migrations - {{- if .Values.migrations.annotations }} - annotations: - {{- range $key, $value := .Values.migrations.annotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} - {{- if (and (not .Values.deployment.serviceAccount.automountServiceAccountToken) (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name)) }} - kuma.io/service-account-token-volume: {{ template "kong.serviceAccountTokenName" . }} - {{- end }} - {{- end }} - spec: - {{- if or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name }} - serviceAccountName: {{ template "kong.serviceAccountName" . }} - {{- end }} - {{- if (and (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name) .Values.deployment.serviceAccount.automountServiceAccountToken) }} - automountServiceAccountToken: true - {{- else }} - automountServiceAccountToken: false - {{ end }} - {{- if .Values.image.pullSecrets }} - imagePullSecrets: - {{- range .Values.image.pullSecrets }} - - name: {{ . }} - {{- end }} - {{- end }} - {{- if (or (and (.Values.postgresql.enabled) .Values.waitImage.enabled) .Values.deployment.initContainers) }} - initContainers: - {{- if .Values.deployment.initContainers }} - {{- toYaml .Values.deployment.initContainers | nindent 6 }} - {{- end }} - {{- if (and (.Values.postgresql.enabled) .Values.waitImage.enabled) }} - {{- include "kong.wait-for-postgres" . | nindent 6 }} - {{- end }} - {{- end }} - containers: - {{- if .Values.migrations.sidecarContainers }} - {{- toYaml .Values.migrations.sidecarContainers | nindent 6 }} - {{- end }} - - name: {{ template "kong.name" . }}-post-upgrade-migrations - image: {{ include "kong.getRepoTag" .Values.image }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - securityContext: - {{ toYaml .Values.containerSecurityContext | nindent 10 }} - env: - {{- include "kong.no_daemon_env" . | nindent 8 }} - {{- include "kong.envFrom" .Values.envFrom | nindent 8 }} - args: [ "kong", "migrations", "finish" ] - volumeMounts: - {{- include "kong.volumeMounts" . | nindent 8 }} - {{- include "kong.userDefinedVolumeMounts" .Values.deployment | nindent 8 }} - resources: - {{- toYaml .Values.migrations.resources | nindent 10 }} - securityContext: - {{- include "kong.podsecuritycontext" . | nindent 8 }} - {{- if .Values.affinity }} - affinity: - {{- toYaml .Values.affinity | nindent 8 }} - {{- end }} - {{- if .Values.nodeSelector }} - nodeSelector: - {{- toYaml .Values.nodeSelector | nindent 8 }} - {{- end }} - {{- if .Values.tolerations }} - tolerations: - {{- toYaml .Values.tolerations | nindent 8 }} - {{- end }} - restartPolicy: OnFailure - volumes: - {{- include "kong.volumes" . | nindent 6 -}} - {{- include "kong.userDefinedVolumes" . | nindent 6 -}} -{{- end }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/templates/migrations-pre-upgrade.yaml b/manifests/helm/kong/2.46.0/templates/migrations-pre-upgrade.yaml deleted file mode 100644 index 19d9116..0000000 --- a/manifests/helm/kong/2.46.0/templates/migrations-pre-upgrade.yaml +++ /dev/null @@ -1,102 +0,0 @@ -{{- if .Values.deployment.kong.enabled }} -{{- if (and .Values.migrations.preUpgrade (not (eq .Values.env.database "off"))) }} -# Why is this Job duplicated and not using only helm hooks? -# See: https://github.com/helm/charts/pull/7362 -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ template "kong.fullname" . }}-pre-upgrade-migrations - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} - app.kubernetes.io/component: pre-upgrade-migrations - annotations: - helm.sh/hook: "pre-upgrade" - helm.sh/hook-delete-policy: "before-hook-creation" - argocd.argoproj.io/hook: Sync - argocd.argoproj.io/hook-delete-policy: BeforeHookCreation - {{- range $key, $value := .Values.migrations.jobAnnotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} -spec: - backoffLimit: {{ .Values.migrations.backoffLimit }} - {{- if .Values.migrations.ttlSecondsAfterFinished }} - ttlSecondsAfterFinished: {{ .Values.migrations.ttlSecondsAfterFinished }} - {{- end }} - template: - metadata: - name: {{ template "kong.name" . }}-pre-upgrade-migrations - labels: - {{- include "kong.metaLabels" . | nindent 8 }} - app.kubernetes.io/component: pre-upgrade-migrations - {{- if .Values.migrations.annotations }} - annotations: - {{- range $key, $value := .Values.migrations.annotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} - {{- if (and (not .Values.deployment.serviceAccount.automountServiceAccountToken) (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name)) }} - kuma.io/service-account-token-volume: {{ template "kong.serviceAccountTokenName" . }} - {{- end }} - {{- end }} - spec: - {{- if or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name }} - serviceAccountName: {{ template "kong.serviceAccountName" . }} - {{- end }} - {{- if (and (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name) .Values.deployment.serviceAccount.automountServiceAccountToken) }} - automountServiceAccountToken: true - {{- else }} - automountServiceAccountToken: false - {{ end }} - {{- if .Values.image.pullSecrets }} - imagePullSecrets: - {{- range .Values.image.pullSecrets }} - - name: {{ . }} - {{- end }} - {{- end }} - {{- if (or (and (.Values.postgresql.enabled) .Values.waitImage.enabled) .Values.deployment.initContainers) }} - initContainers: - {{- if .Values.deployment.initContainers }} - {{- toYaml .Values.deployment.initContainers | nindent 6 }} - {{- end }} - {{- if (and (.Values.postgresql.enabled) .Values.waitImage.enabled) }} - {{- include "kong.wait-for-postgres" . | nindent 6 }} - {{- end }} - {{- end }} - containers: - {{- if .Values.migrations.sidecarContainers }} - {{- toYaml .Values.migrations.sidecarContainers | nindent 6 }} - {{- end }} - - name: {{ template "kong.name" . }}-upgrade-migrations - image: {{ include "kong.getRepoTag" .Values.image }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - securityContext: - {{ toYaml .Values.containerSecurityContext | nindent 10 }} - env: - {{- include "kong.no_daemon_env" . | nindent 8 }} - {{- include "kong.envFrom" .Values.envFrom | nindent 8 }} - args: [ "kong", "migrations", "up" ] - volumeMounts: - {{- include "kong.volumeMounts" . | nindent 8 }} - {{- include "kong.userDefinedVolumeMounts" .Values.deployment | nindent 8 }} - resources: - {{- toYaml .Values.migrations.resources| nindent 10 }} - securityContext: - {{- include "kong.podsecuritycontext" . | nindent 8 }} - {{- if .Values.affinity }} - affinity: - {{- toYaml .Values.affinity | nindent 8 }} - {{- end }} - {{- if .Values.nodeSelector }} - nodeSelector: - {{- toYaml .Values.nodeSelector | nindent 8 }} - {{- end }} - {{- if .Values.tolerations }} - tolerations: - {{- toYaml .Values.tolerations | nindent 8 }} - {{- end }} - restartPolicy: OnFailure - volumes: - {{- include "kong.volumes" . | nindent 6 -}} - {{- include "kong.userDefinedVolumes" . | nindent 6 -}} -{{- end }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/templates/migrations.yaml b/manifests/helm/kong/2.46.0/templates/migrations.yaml deleted file mode 100644 index ae66be9..0000000 --- a/manifests/helm/kong/2.46.0/templates/migrations.yaml +++ /dev/null @@ -1,111 +0,0 @@ -{{- if .Values.deployment.kong.enabled }} -{{- if .Release.IsInstall -}} -{{/* .migrations.init isn't normally exposed in values.yaml, since it should - generally always run on install--there should never be any reason to - disable it, and at worst it's a no-op. However, https://github.com/helm/helm/issues/3308 - means we cannot use the default function to create a hidden value, hence - the workaround with this $runInit variable. - */}} -{{- $runInit := true -}} -{{- if (hasKey .Values.migrations "init") -}} - {{- $runInit = .Values.migrations.init -}} -{{- end -}} - -{{- if (and ($runInit) (not (eq .Values.env.database "off"))) }} -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ template "kong.fullname" . }}-init-migrations - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} - app.kubernetes.io/component: init-migrations - annotations: - argocd.argoproj.io/hook: Sync - argocd.argoproj.io/hook-delete-policy: BeforeHookCreation - {{- range $key, $value := .Values.migrations.jobAnnotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} -spec: - backoffLimit: {{ .Values.migrations.backoffLimit }} - {{- if .Values.migrations.ttlSecondsAfterFinished }} - ttlSecondsAfterFinished: {{ .Values.migrations.ttlSecondsAfterFinished }} - {{- end }} - template: - metadata: - name: {{ template "kong.name" . }}-init-migrations - labels: - {{- include "kong.metaLabels" . | nindent 8 }} - app.kubernetes.io/component: init-migrations - {{- if .Values.migrations.annotations }} - annotations: - {{- range $key, $value := .Values.migrations.annotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} - {{- if (and (not .Values.deployment.serviceAccount.automountServiceAccountToken) (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name)) }} - kuma.io/service-account-token-volume: {{ template "kong.serviceAccountTokenName" . }} - {{- end }} - {{- end }} - spec: - {{- if or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name }} - serviceAccountName: {{ template "kong.serviceAccountName" . }} - {{- end }} - {{- if (and (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name) .Values.deployment.serviceAccount.automountServiceAccountToken) }} - automountServiceAccountToken: true - {{- else }} - automountServiceAccountToken: false - {{ end }} - {{- if .Values.image.pullSecrets }} - imagePullSecrets: - {{- range .Values.image.pullSecrets }} - - name: {{ . }} - {{- end }} - {{- end }} - {{- if (or (and (.Values.postgresql.enabled) .Values.waitImage.enabled) .Values.deployment.initContainers) }} - initContainers: - {{- if .Values.deployment.initContainers }} - {{- toYaml .Values.deployment.initContainers | nindent 6 }} - {{- end }} - {{- if (and (.Values.postgresql.enabled) .Values.waitImage.enabled) }} - {{- include "kong.wait-for-postgres" . | nindent 6 }} - {{- end }} - {{- end }} - containers: - {{- if .Values.migrations.sidecarContainers }} - {{- toYaml .Values.migrations.sidecarContainers | nindent 6 }} - {{- end }} - - name: {{ template "kong.name" . }}-migrations - image: {{ include "kong.getRepoTag" .Values.image }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - securityContext: - {{ toYaml .Values.containerSecurityContext | nindent 10 }} - env: - {{- include "kong.no_daemon_env" . | nindent 8 }} - {{- include "kong.envFrom" .Values.envFrom | nindent 8 }} - args: [ "kong", "migrations", "bootstrap" ] - volumeMounts: - {{- include "kong.volumeMounts" . | nindent 8 }} - {{- include "kong.userDefinedVolumeMounts" .Values.deployment | nindent 8 }} - resources: - {{- toYaml .Values.migrations.resources | nindent 10 }} - securityContext: - {{- include "kong.podsecuritycontext" . | nindent 8 }} - {{- if .Values.affinity }} - affinity: - {{- toYaml .Values.affinity | nindent 8 }} - {{- end }} - {{- if .Values.nodeSelector }} - nodeSelector: - {{- toYaml .Values.nodeSelector | nindent 8 }} - {{- end }} - {{- if .Values.tolerations }} - tolerations: - {{- toYaml .Values.tolerations | nindent 8 }} - {{- end }} - restartPolicy: OnFailure - volumes: - {{- include "kong.volumes" . | nindent 6 -}} - {{- include "kong.userDefinedVolumes" . | nindent 6 -}} -{{- end }} -{{- end }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/templates/pdb.yaml b/manifests/helm/kong/2.46.0/templates/pdb.yaml deleted file mode 100644 index 8d918c5..0000000 --- a/manifests/helm/kong/2.46.0/templates/pdb.yaml +++ /dev/null @@ -1,26 +0,0 @@ -{{- if .Values.podDisruptionBudget.enabled }} -{{- if and (not .Values.autoscaling.enabled) (le (int .Values.replicaCount) 1) }} -{{- fail "Enabling PodDisruptionBudget with replicaCount: 1 and no autoscaling prevents pod restarts during upgrades" }} -{{- end }} -{{- if and .Values.autoscaling.enabled (le (int .Values.autoscaling.minReplicas) 1) }} -{{- fail "Enabling PodDisruptionBudget with autoscaling.minReplicas: 1 prevents pod restarts during upgrades" }} -{{- end }} -apiVersion: policy/v1 -kind: PodDisruptionBudget -metadata: - name: {{ template "kong.fullname" . }} - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -spec: - {{- if .Values.podDisruptionBudget.minAvailable }} - minAvailable: {{ .Values.podDisruptionBudget.minAvailable }} - {{- end }} - {{- if .Values.podDisruptionBudget.maxUnavailable }} - maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }} - {{- end }} - selector: - matchLabels: - {{- include "kong.metaLabels" . | nindent 6 }} - app.kubernetes.io/component: app -{{- end }} diff --git a/manifests/helm/kong/2.46.0/templates/psp.yaml b/manifests/helm/kong/2.46.0/templates/psp.yaml deleted file mode 100644 index bc98447..0000000 --- a/manifests/helm/kong/2.46.0/templates/psp.yaml +++ /dev/null @@ -1,53 +0,0 @@ -{{- if and (.Values.podSecurityPolicy.enabled) }} -apiVersion: {{ include "kong.policyVersion" . }} -kind: PodSecurityPolicy -metadata: - name: {{ template "kong.serviceAccountName" . }}-psp - labels: - {{- include "kong.metaLabels" . | nindent 4 }} - {{- with .Values.podSecurityPolicy.labels }} - {{- range $key, $value := . }} - {{ $key }}: {{ $value }} - {{- end }} - {{- end }} - {{- with .Values.podSecurityPolicy.annotations }} - annotations: - {{- range $key, $value := . }} - {{ $key }}: {{ $value | quote }} - {{- end }} - {{- end }} -spec: -{{ .Values.podSecurityPolicy.spec | toYaml | indent 2 }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "kong.serviceAccountName" . }}-psp - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -rules: - - apiGroups: - - policy - resources: - - podsecuritypolicies - verbs: - - use - resourceNames: - - {{ template "kong.serviceAccountName" . }}-psp ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "kong.serviceAccountName" . }}-psp - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -subjects: - - kind: ServiceAccount - name: {{ template "kong.serviceAccountName" . }} - namespace: {{ template "kong.namespace" . }} -roleRef: - kind: ClusterRole - name: {{ template "kong.serviceAccountName" . }}-psp - apiGroup: rbac.authorization.k8s.io -{{- end }} diff --git a/manifests/helm/kong/2.46.0/templates/secret-sa-token.yaml b/manifests/helm/kong/2.46.0/templates/secret-sa-token.yaml deleted file mode 100644 index fe8a67d..0000000 --- a/manifests/helm/kong/2.46.0/templates/secret-sa-token.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- /* Due to GKE versions (e.g. v1.23.15-gke.1900) we need to handle pre-release part of the version as well. -See the related documentation of semver module that Helm depends on for semverCompare: -https://github.com/Masterminds/semver#working-with-prerelease-versions -Related Helm issue: https://github.com/helm/helm/issues/3810 */}} -{{- if and (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name) (semverCompare "<1.20.0-0" .Capabilities.KubeVersion.Version) }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "kong.serviceAccountTokenName" . }} - namespace: {{ template "kong.namespace" . }} - annotations: - kubernetes.io/service-account.name: {{ template "kong.serviceAccountName" . }} -type: kubernetes.io/service-account-token -{{- end }} diff --git a/manifests/helm/kong/2.46.0/templates/service-account.yaml b/manifests/helm/kong/2.46.0/templates/service-account.yaml deleted file mode 100644 index 41ef6ac..0000000 --- a/manifests/helm/kong/2.46.0/templates/service-account.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if and (or .Values.deployment.kong.enabled .Values.ingressController.enabled) .Values.deployment.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "kong.serviceAccountName" . }} - namespace: {{ template "kong.namespace" . }} - {{- if .Values.deployment.serviceAccount.annotations }} - annotations: - {{- range $key, $value := .Values.deployment.serviceAccount.annotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} - {{- end }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/templates/service-kong-admin.yaml b/manifests/helm/kong/2.46.0/templates/service-kong-admin.yaml deleted file mode 100644 index d005016..0000000 --- a/manifests/helm/kong/2.46.0/templates/service-kong-admin.yaml +++ /dev/null @@ -1,113 +0,0 @@ -{{- if .Values.deployment.kong.enabled }} -{{- if and .Values.admin.enabled (or .Values.admin.http.enabled .Values.admin.tls.enabled) -}} -{{- $serviceConfig := dict -}} -{{- $serviceConfig := merge $serviceConfig .Values.admin -}} -{{- $_ := set $serviceConfig "ingressVersion" (include "kong.ingressVersion" .) -}} -{{- $_ := set $serviceConfig "fullName" (include "kong.fullname" .) -}} -{{- $_ := set $serviceConfig "namespace" (include "kong.namespace" .) -}} -{{- $_ := set $serviceConfig "metaLabels" (include "kong.metaLabels" .) -}} -{{- $_ := set $serviceConfig "selectorLabels" (include "kong.selectorLabels" .) -}} -{{- $_ := set $serviceConfig "serviceName" "admin" -}} -{{- include "kong.service" $serviceConfig }} -{{ if .Values.admin.ingress.enabled }} ---- -{{ include "kong.ingress" $serviceConfig }} -{{- end -}} -{{- end -}} -{{- end -}} - -{{- define "adminApiService.certSecretName" -}} - {{- default (printf "%s-admin-api-keypair" (include "kong.fullname" .)) .Values.ingressController.adminApi.tls.client.secretName -}} -{{- end -}} - -{{- define "adminApiService.caSecretName" -}} - {{- default (printf "%s-admin-api-ca-keypair" (include "kong.fullname" .)) .Values.ingressController.adminApi.tls.client.caSecretName -}} -{{- end -}} - -{{- $clientVerifyEnabled := .Values.ingressController.adminApi.tls.client.enabled -}} -{{- $clientCertProvided := .Values.ingressController.adminApi.tls.client.certProvided -}} - -{{/* If the client verification is enabled but no secret was provided by the user, let's generate certificates. */ -}} -{{- if and $clientVerifyEnabled (not $clientCertProvided) }} -{{- $certCert := "" -}} -{{- $certKey := "" -}} - -{{- $cn := printf "admin.%s.svc" ( include "kong.namespace" . ) -}} -{{- $ca := genCA "admin-api-ca" 3650 -}} -{{- $cert := genSignedCert $cn nil (list $cn) 3650 $ca -}} - -{{- $certCert = $cert.Cert -}} -{{- $certKey = $cert.Key -}} -{{/* Verify whether a secret with a given name already exists. If it does, let's use its cert and key data. */}} -{{- $certSecret := (lookup "v1" "Secret" (include "kong.namespace" .) (include "adminApiService.certSecretName" .)) -}} -{{- if $certSecret }} -{{- $certCert = (b64dec (get $certSecret.data "tls.crt")) -}} -{{- $certKey = (b64dec (get $certSecret.data "tls.key")) -}} -{{- end }} - -{{- $caCert := $ca.Cert -}} -{{- $caKey := $ca.Key -}} -{{/* Verify whether a secret with a given name already exists. If it does, let's use its cert and key data. */ -}} -{{- $caSecret := (lookup "v1" "Secret" (include "kong.namespace" .) (include "adminApiService.caSecretName" .))}} -{{- if $caSecret }} -{{- $caCert = (b64dec (get $caSecret.data "tls.crt")) -}} -{{- $caKey = (b64dec (get $caSecret.data "tls.key")) -}} -{{- end }} - ---- -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "adminApiService.certSecretName" . }} - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -type: kubernetes.io/tls -data: - tls.crt: {{ b64enc $certCert }} - tls.key: {{ b64enc $certKey }} ---- -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "adminApiService.caSecretName" . }} - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -type: kubernetes.io/tls -data: - tls.crt: {{ b64enc $caCert }} - tls.key: {{ b64enc $caKey }} -{{- end }} - -{{- /* Create a CA ConfigMap for Kong. */ -}} -{{- $secretProvided := $.Values.admin.tls.client.secretName -}} -{{- $bundleProvided := $.Values.admin.tls.client.caBundle -}} - -{{- if or $secretProvided $bundleProvided -}} -{{- $cert := "" -}} - -{{- if $secretProvided -}} -{{- $certSecret := (lookup "v1" "Secret" (include "kong.namespace" .) $.Values.admin.tls.client.secretName) -}} -{{- if $certSecret }} -{{- $cert = (b64dec (get $certSecret.data "tls.crt")) -}} -{{- else -}} -{{- fail (printf "%s/%s secret not found" (include "kong.namespace" .) $.Values.admin.tls.client.secretName) -}} -{{- end }} -{{- end }} - -{{- if $bundleProvided -}} -{{- $cert = $.Values.admin.tls.client.caBundle -}} -{{- end }} - ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "kong.fullname" . }}-admin-client-ca - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -data: - tls.crt: {{ $cert | quote }} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/templates/service-kong-cluster-telemetry.yaml b/manifests/helm/kong/2.46.0/templates/service-kong-cluster-telemetry.yaml deleted file mode 100644 index b245bca..0000000 --- a/manifests/helm/kong/2.46.0/templates/service-kong-cluster-telemetry.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.deployment.kong.enabled }} -{{- if and .Values.clustertelemetry.enabled .Values.clustertelemetry.tls.enabled -}} -{{- $serviceConfig := dict -}} -{{- $serviceConfig := merge $serviceConfig .Values.clustertelemetry -}} -{{- $_ := set $serviceConfig "ingressVersion" (include "kong.ingressVersion" .) -}} -{{- $_ := set $serviceConfig "fullName" (include "kong.fullname" .) -}} -{{- $_ := set $serviceConfig "namespace" (include "kong.namespace" .) -}} -{{- $_ := set $serviceConfig "metaLabels" (include "kong.metaLabels" .) -}} -{{- $_ := set $serviceConfig "selectorLabels" (include "kong.selectorLabels" .) -}} -{{- $_ := set $serviceConfig "serviceName" "clustertelemetry" -}} -{{- include "kong.service" $serviceConfig }} -{{ if .Values.clustertelemetry.ingress.enabled }} ---- -{{ include "kong.ingress" $serviceConfig }} -{{- end -}} -{{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/templates/service-kong-cluster.yaml b/manifests/helm/kong/2.46.0/templates/service-kong-cluster.yaml deleted file mode 100644 index f4ef662..0000000 --- a/manifests/helm/kong/2.46.0/templates/service-kong-cluster.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.deployment.kong.enabled }} -{{- if and .Values.cluster.enabled .Values.cluster.tls.enabled -}} -{{- $serviceConfig := dict -}} -{{- $serviceConfig := merge $serviceConfig .Values.cluster -}} -{{- $_ := set $serviceConfig "ingressVersion" (include "kong.ingressVersion" .) -}} -{{- $_ := set $serviceConfig "fullName" (include "kong.fullname" .) -}} -{{- $_ := set $serviceConfig "namespace" (include "kong.namespace" .) -}} -{{- $_ := set $serviceConfig "metaLabels" (include "kong.metaLabels" .) -}} -{{- $_ := set $serviceConfig "selectorLabels" (include "kong.selectorLabels" .) -}} -{{- $_ := set $serviceConfig "serviceName" "cluster" -}} -{{- include "kong.service" $serviceConfig }} -{{ if .Values.cluster.ingress.enabled }} ---- -{{ include "kong.ingress" $serviceConfig }} -{{- end -}} -{{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/templates/service-kong-manager.yaml b/manifests/helm/kong/2.46.0/templates/service-kong-manager.yaml deleted file mode 100644 index e673287..0000000 --- a/manifests/helm/kong/2.46.0/templates/service-kong-manager.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.deployment.kong.enabled }} -{{- if and .Values.manager.enabled (or .Values.manager.http.enabled .Values.manager.tls.enabled) -}} -{{- $serviceConfig := dict -}} -{{- $serviceConfig := merge $serviceConfig .Values.manager -}} -{{- $_ := set $serviceConfig "ingressVersion" (include "kong.ingressVersion" .) -}} -{{- $_ := set $serviceConfig "fullName" (include "kong.fullname" .) -}} -{{- $_ := set $serviceConfig "namespace" (include "kong.namespace" .) -}} -{{- $_ := set $serviceConfig "metaLabels" (include "kong.metaLabels" .) -}} -{{- $_ := set $serviceConfig "selectorLabels" (include "kong.selectorLabels" .) -}} -{{- $_ := set $serviceConfig "serviceName" "manager" -}} -{{- include "kong.service" $serviceConfig }} -{{ if .Values.manager.ingress.enabled }} ---- -{{ include "kong.ingress" $serviceConfig }} -{{- end -}} -{{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/templates/service-kong-portal-api.yaml b/manifests/helm/kong/2.46.0/templates/service-kong-portal-api.yaml deleted file mode 100644 index 710f201..0000000 --- a/manifests/helm/kong/2.46.0/templates/service-kong-portal-api.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if .Values.deployment.kong.enabled }} -{{- if .Values.enterprise.enabled }} -{{- if and .Values.portalapi.enabled (or .Values.portalapi.http.enabled .Values.portalapi.tls.enabled) -}} -{{- $serviceConfig := dict -}} -{{- $serviceConfig := merge $serviceConfig .Values.portalapi -}} -{{- $_ := set $serviceConfig "ingressVersion" (include "kong.ingressVersion" .) -}} -{{- $_ := set $serviceConfig "fullName" (include "kong.fullname" .) -}} -{{- $_ := set $serviceConfig "namespace" (include "kong.namespace" .) -}} -{{- $_ := set $serviceConfig "metaLabels" (include "kong.metaLabels" .) -}} -{{- $_ := set $serviceConfig "selectorLabels" (include "kong.selectorLabels" .) -}} -{{- $_ := set $serviceConfig "serviceName" "portalapi" -}} -{{- include "kong.service" $serviceConfig }} -{{ if .Values.portalapi.ingress.enabled }} ---- -{{ include "kong.ingress" $serviceConfig }} -{{- end -}} -{{- end -}} -{{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/templates/service-kong-portal.yaml b/manifests/helm/kong/2.46.0/templates/service-kong-portal.yaml deleted file mode 100644 index 0be4b09..0000000 --- a/manifests/helm/kong/2.46.0/templates/service-kong-portal.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if .Values.deployment.kong.enabled }} -{{- if .Values.enterprise.enabled }} -{{- if and .Values.portal.enabled (or .Values.portal.http.enabled .Values.portal.tls.enabled) -}} -{{- $serviceConfig := dict -}} -{{- $serviceConfig := merge $serviceConfig .Values.portal -}} -{{- $_ := set $serviceConfig "ingressVersion" (include "kong.ingressVersion" .) -}} -{{- $_ := set $serviceConfig "fullName" (include "kong.fullname" .) -}} -{{- $_ := set $serviceConfig "namespace" (include "kong.namespace" .) -}} -{{- $_ := set $serviceConfig "metaLabels" (include "kong.metaLabels" .) -}} -{{- $_ := set $serviceConfig "selectorLabels" (include "kong.selectorLabels" .) -}} -{{- $_ := set $serviceConfig "serviceName" "portal" -}} -{{- include "kong.service" $serviceConfig }} -{{ if .Values.portal.ingress.enabled }} ---- -{{ include "kong.ingress" $serviceConfig }} -{{- end -}} -{{- end -}} -{{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/templates/service-kong-proxy.yaml b/manifests/helm/kong/2.46.0/templates/service-kong-proxy.yaml deleted file mode 100644 index 58a255e..0000000 --- a/manifests/helm/kong/2.46.0/templates/service-kong-proxy.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if .Values.deployment.kong.enabled }} -{{- if and .Values.proxy.enabled (or .Values.proxy.http.enabled .Values.proxy.tls.enabled) -}} -{{- $serviceConfig := dict -}} -{{- $serviceConfig := merge $serviceConfig .Values.proxy -}} -{{- $_ := set $serviceConfig "fullName" (include "kong.fullname" .) -}} -{{- $_ := set $serviceConfig "namespace" (include "kong.namespace" .) -}} -{{- $_ := set $serviceConfig "metaLabels" (include "kong.metaLabels" .) -}} -{{- $_ := set $serviceConfig "selectorLabels" (include "kong.selectorLabels" .) -}} -{{- $_ := set $serviceConfig "serviceName" "proxy" -}} -{{- include "kong.service" $serviceConfig }} -{{ if .Values.proxy.ingress.enabled }} ---- -{{ include "kong.ingress" $serviceConfig }} -{{- end -}} -{{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/templates/service-kong-udp-proxy.yaml b/manifests/helm/kong/2.46.0/templates/service-kong-udp-proxy.yaml deleted file mode 100644 index bb25c5d..0000000 --- a/manifests/helm/kong/2.46.0/templates/service-kong-udp-proxy.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if .Values.deployment.kong.enabled }} -{{- if and .Values.udpProxy.enabled -}} -{{- $serviceConfig := dict -}} -{{- $serviceConfig := merge $serviceConfig .Values.udpProxy -}} -{{- $_ := set $serviceConfig "ingressVersion" (include "kong.ingressVersion" .) -}} -{{- $_ := set $serviceConfig "fullName" (include "kong.fullname" .) -}} -{{- $_ := set $serviceConfig "namespace" (include "kong.namespace" .) -}} -{{- $_ := set $serviceConfig "metaLabels" (include "kong.metaLabels" .) -}} -{{- $_ := set $serviceConfig "selectorLabels" (include "kong.selectorLabels" .) -}} -{{- $_ := set $serviceConfig "serviceName" "udp-proxy" -}} -{{- $_ := set $serviceConfig "tls" (dict "enabled" false) -}} -{{- $_ := set $serviceConfig "http" (dict "enabled" false) -}} -{{- include "kong.service" $serviceConfig }} -{{- end -}} -{{- end -}} diff --git a/manifests/helm/kong/2.46.0/templates/servicemonitor.yaml b/manifests/helm/kong/2.46.0/templates/servicemonitor.yaml deleted file mode 100644 index 50ec5a1..0000000 --- a/manifests/helm/kong/2.46.0/templates/servicemonitor.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- if and .Values.serviceMonitor.enabled (or (.Capabilities.APIVersions.Has "monitoring.coreos.com/v1") .Values.serviceMonitor.trustCRDsExist) }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kong.fullname" . }} - {{- if .Values.serviceMonitor.namespace }} - namespace: {{ .Values.serviceMonitor.namespace }} - {{- end }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} - {{- if .Values.serviceMonitor.labels }} - {{ toYaml .Values.serviceMonitor.labels | nindent 4 }} - {{- end }} -spec: - endpoints: - - targetPort: status - scheme: http - {{- if .Values.serviceMonitor.interval }} - interval: {{ .Values.serviceMonitor.interval }} - {{- end }} - {{- if .Values.serviceMonitor.honorLabels }} - honorLabels: true - {{- end }} - {{- if .Values.serviceMonitor.metricRelabelings }} - metricRelabelings: {{ toYaml .Values.serviceMonitor.metricRelabelings | nindent 6 }} - {{- end }} - {{- if .Values.serviceMonitor.relabelings }} - relabelings: {{ toYaml .Values.serviceMonitor.relabelings | nindent 6 }} - {{- end }} - {{- if and .Values.ingressController.enabled (semverCompare ">= 2.0.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }} - - targetPort: cmetrics - scheme: http - {{- if .Values.serviceMonitor.interval }} - interval: {{ .Values.serviceMonitor.interval }} - {{- end }} - {{- if .Values.serviceMonitor.honorLabels }} - honorLabels: true - {{- end }} - {{- if .Values.serviceMonitor.metricRelabelings }} - metricRelabelings: {{ toYaml .Values.serviceMonitor.metricRelabelings | nindent 6 }} - {{- end }} - {{- if .Values.serviceMonitor.relabelings }} - relabelings: {{ toYaml .Values.serviceMonitor.relabelings | nindent 6 }} - {{- end }} - {{- end }} - jobLabel: {{ .Release.Name }} - namespaceSelector: - matchNames: - - {{ template "kong.namespace" . }} - selector: - matchLabels: - enable-metrics: "true" - {{- include "kong.metaLabels" . | nindent 6 }} - {{- if .Values.serviceMonitor.targetLabels }} - targetLabels: {{ toYaml .Values.serviceMonitor.targetLabels | nindent 4 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/kong/2.46.0/templates/wait-for-postgres-script.yaml b/manifests/helm/kong/2.46.0/templates/wait-for-postgres-script.yaml deleted file mode 100644 index 67d2e8f..0000000 --- a/manifests/helm/kong/2.46.0/templates/wait-for-postgres-script.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{ if (and (.Values.postgresql.enabled) .Values.waitImage.enabled) }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "kong.fullname" . }}-bash-wait-for-postgres - namespace: {{ template "kong.namespace" . }} - labels: - {{- include "kong.metaLabels" . | nindent 4 }} -data: - wait.sh: | - until timeout 2 bash -c "9<>/dev/tcp/${KONG_PG_HOST}/${KONG_PG_PORT}" - do echo "waiting for db - trying ${KONG_PG_HOST}:${KONG_PG_PORT}" - sleep 2 - done -{{ end }} diff --git a/manifests/helm/kong/2.46.0/values.yaml b/manifests/helm/kong/2.46.0/values.yaml deleted file mode 100644 index 0f43f0e..0000000 --- a/manifests/helm/kong/2.46.0/values.yaml +++ /dev/null @@ -1,1279 +0,0 @@ -# Default values for Kong's Helm Chart. -# Declare variables to be passed into your templates. -# -# Sections: -# - Deployment parameters -# - Kong parameters -# - Ingress Controller parameters -# - Postgres sub-chart parameters -# - Miscellaneous parameters -# - Kong Enterprise parameters - -# ----------------------------------------------------------------------------- -# Deployment parameters -# ----------------------------------------------------------------------------- - -deployment: - kong: - # Enable or disable Kong itself - # Setting this to false with ingressController.enabled=true will create a - # controller-only release. - enabled: true - # The number of old `ReplicaSet`s to retain. - revisionHistoryLimit: 10 - - ## Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, - ## for it to be considered available. - # minReadySeconds: 60 - ## Specify the service account to create and to be assigned to the deployment / daemonset and for the migrations - serviceAccount: - create: true - # Automount the service account token. By default, this is disabled, and the token is only mounted on the controller - # container. Some sidecars require enabling this. Note that enabling this exposes Kubernetes credentials to Kong - # Lua code, increasing potential attack surface. - automountServiceAccountToken: false - ## Optionally specify the name of the service account to create and the annotations to add. - # name: - # annotations: {} - - ## Optionally specify any extra sidecar containers to be included in the deployment - ## See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core - # sidecarContainers: - # - name: sidecar - # image: sidecar:latest - # initContainers: - # - name: initcon - # image: initcon:latest - # hostAliases: - # - ip: "127.0.0.1" - # hostnames: - # - "foo.local" - # - "bar.local" - - ## Define any volumes and mounts you want present in the Kong proxy container - # userDefinedVolumes: - # - name: "volumeName" - # emptyDir: {} - # userDefinedVolumeMounts: - # - name: "volumeName" - # mountPath: "/opt/user/dir/mount" - test: - # Enable creation of test resources for use with "helm test" - enabled: false - # Use a DaemonSet controller instead of a Deployment controller - daemonset: false - hostNetwork: false - # Set the Deployment's spec.template.hostname field. - # This propagates to Kong API endpoints that report - # the hostname, such as the admin API root and hybrid mode - # /clustering/data-planes endpoint - hostname: "" - # kong_prefix empty dir size - prefixDir: - sizeLimit: 256Mi - # tmp empty dir size - tmpDir: - sizeLimit: 1Gi -# Override namepsace for Kong chart resources. By default, the chart creates resources in the release namespace. -# This may not be desirable when using this chart as a dependency. -# namespace: "example" - -# ----------------------------------------------------------------------------- -# Kong parameters -# ----------------------------------------------------------------------------- - -# Specify Kong configuration -# This chart takes all entries defined under `.env` and transforms them into into `KONG_*` -# environment variables for Kong containers. -# Their names here should match the names used in https://github.com/Kong/kong/blob/master/kong.conf.default -# See https://docs.konghq.com/latest/configuration also for additional details -# Values here take precedence over values from other sections of values.yaml, -# e.g. setting pg_user here will override the value normally set when postgresql.enabled -# is set below. In general, you should not set values here if they are set elsewhere. -env: - database: "off" - # the chart uses the traditional router (for Kong 3.x+) because the ingress - # controller generates traditional routes. if you do not use the controller, - # you may set this to "traditional_compatible" or "expressions" to use the new - # DSL-based router - router_flavor: "traditional" - nginx_worker_processes: "2" - proxy_access_log: /dev/stdout - admin_access_log: /dev/stdout - admin_gui_access_log: /dev/stdout - portal_api_access_log: /dev/stdout - proxy_error_log: /dev/stderr - admin_error_log: /dev/stderr - admin_gui_error_log: /dev/stderr - portal_api_error_log: /dev/stderr - prefix: /kong_prefix/ - -# This section is any customer specific environments variables that doesn't require KONG_ prefix. -# These custom environment variables are typicall used in custom plugins or serverless plugins to -# access environment specific credentials or tokens. -# Example as below, uncomment if required and add additional attributes as required. -# Note that these environment variables will only apply to the proxy and init container. The ingress-controller -# container has its own customEnv section. - -# customEnv: -# api_token: -# valueFrom: -# secretKeyRef: -# key: token -# name: api_key -# client_name: testClient - -# Load all ConfigMap or Secret keys as environment variables: -# https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables -envFrom: [] - -# This section can be used to configure some extra labels that will be added to each Kubernetes object generated. -extraLabels: {} - -# Specify Kong's Docker image and repository details here -image: - repository: kong - tag: "3.8" - # Kong Enterprise - # repository: kong/kong-gateway - # tag: "3.8" - - # Specify a semver version if your image tag is not one (e.g. "nightly") - effectiveSemver: - 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 - -# Specify Kong admin API service and listener configuration -admin: - # Enable creating a Kubernetes service for the admin API - # Disabling this is recommended for most ingress controller configurations - # Enterprise users that wish to use Kong Manager with the controller should enable this - enabled: false - type: NodePort - loadBalancerClass: - # To specify annotations or labels for the admin service, add them to the respective - # "annotations" or "labels" dictionaries below. - annotations: {} - # service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" - labels: {} - - http: - # Enable plaintext HTTP listen for the admin API - # Disabling this and using a TLS listen only is recommended for most configuration - enabled: false - servicePort: 8001 - containerPort: 8001 - # Set a nodePort which is available if service type is NodePort - # nodePort: 32080 - # Additional listen parameters, e.g. "reuseport", "backlog=16384" - parameters: [] - - tls: - # Enable HTTPS listen for the admin API - enabled: true - servicePort: 8444 - containerPort: 8444 - # Set a target port for the TLS port in the admin API service, useful when using TLS - # termination on an ELB. - # overrideServiceTargetPort: 8000 - # Set a nodePort which is available if service type is NodePort - # nodePort: 32443 - # Additional listen parameters, e.g. "reuseport", "backlog=16384" - parameters: - - http2 - - # Specify the CA certificate to use for TLS verification of the Admin API client by: - # - secretName - the secret must contain a key named "tls.crt" with the PEM-encoded certificate. - # - caBundle (PEM-encoded certificate string). - # If both are set, caBundle takes precedence. - client: - caBundle: "" - secretName: "" - - # Kong admin ingress settings. Useful if you want to expose the Admin - # API of Kong outside the k8s cluster. - ingress: - # Enable/disable exposure using ingress. - enabled: false - ingressClassName: - # TLS secret name. - # tls: kong-admin.example.com-tls - # Ingress hostname - hostname: - # Map of ingress annotations. - annotations: {} - # Ingress path. - path: / - # Each path in an Ingress is required to have a corresponding path type. (ImplementationSpecific/Exact/Prefix) - pathType: ImplementationSpecific - -# Specify Kong status listener configuration -# This listen is internal-only. It cannot be exposed through a service or ingress. -status: - enabled: true - http: - # Enable plaintext HTTP listen for the status listen - enabled: true - containerPort: 8100 - parameters: [] - - tls: - # Enable HTTPS listen for the status listen - # Kong versions prior to 2.1 do not support TLS status listens. - # This setting must remain false on those versions - enabled: false - containerPort: 8543 - parameters: [] - -# Name the kong hybrid cluster CA certificate secret -clusterCaSecretName: "" - -# Specify Kong cluster service and listener configuration -# -# The cluster service *must* use TLS. It does not support the "http" block -# available on other services. -# -# The cluster service cannot be exposed through an Ingress, as it must perform -# TLS client validation directly and is not compatible with TLS-terminating -# proxies. If you need to expose it externally, you must use "type: -# LoadBalancer" and use a TCP-only load balancer (check your Kubernetes -# provider's documentation, as the configuration required for this varies). -cluster: - enabled: false - # To specify annotations or labels for the cluster service, add them to the respective - # "annotations" or "labels" dictionaries below. - annotations: {} - # service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" - labels: {} - - tls: - enabled: false - servicePort: 8005 - containerPort: 8005 - parameters: [] - - type: ClusterIP - loadBalancerClass: - - # Kong cluster ingress settings. Useful if you want to split CP and DP - # in different clusters. - ingress: - # Enable/disable exposure using ingress. - enabled: false - ingressClassName: - # TLS secret name. - # tls: kong-cluster.example.com-tls - # Ingress hostname - hostname: - # Map of ingress annotations. - annotations: {} - # Ingress path. - path: / - # Each path in an Ingress is required to have a corresponding path type. (ImplementationSpecific/Exact/Prefix) - pathType: ImplementationSpecific - -# Specify Kong proxy service configuration -proxy: - # Enable creating a Kubernetes service for the proxy - enabled: true - type: LoadBalancer - loadBalancerClass: "" - # Configures optional firewall rules and in the VPC network to only allow certain source ranges. - loadBalancerSourceRanges: [] - # Override proxy Service name - nameOverride: "" - # To specify annotations or labels for the proxy service, add them to the respective - # "annotations" or "labels" dictionaries below. - annotations: {} - # If terminating TLS at the ELB, the following annotations can be used - # "service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "*", - # "service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled": "true", - # "service.beta.kubernetes.io/aws-load-balancer-ssl-cert": "arn:aws:acm:REGION:ACCOUNT:certificate/XXXXXX-XXXXXXX-XXXXXXX-XXXXXXXX", - # "service.beta.kubernetes.io/aws-load-balancer-ssl-ports": "kong-proxy-tls", - # "service.beta.kubernetes.io/aws-load-balancer-type": "elb" - labels: - enable-metrics: "true" - - http: - # Enable plaintext HTTP listen for the proxy - enabled: true - # Set the servicePort: 0 to skip exposing in the service but still - # let the port open in container to allow https to http mapping for - # tls terminated at LB. - servicePort: 80 - containerPort: 8000 - # Set a nodePort which is available if service type is NodePort - # nodePort: 32080 - # Additional listen parameters, e.g. "reuseport", "backlog=16384" - parameters: [] - - tls: - # Enable HTTPS listen for the proxy - enabled: true - servicePort: 443 - containerPort: 8443 - # Set a target port for the TLS port in proxy service - # overrideServiceTargetPort: 8000 - # Set a nodePort which is available if service type is NodePort - # nodePort: 32443 - # Additional listen parameters, e.g. "reuseport", "backlog=16384" - parameters: - - http2 - - # Specify the Service's TLS port's appProtocol. This can be useful when integrating with - # external load balancers that require the `appProtocol` field to be set (e.g. GCP). - appProtocol: "" - - # Define stream (TCP) listen - # To enable, remove "[]", uncomment the section below, and select your desired - # ports and parameters. Listens are dynamically named after their containerPort, - # e.g. "stream-9000" for the below. - # Note: although you can select the protocol here, you cannot set UDP if you - # use a LoadBalancer Service due to limitations in current Kubernetes versions. - # To proxy both TCP and UDP with LoadBalancers, you must enable the udpProxy Service - # in the next section and place all UDP stream listen configuration under it. - stream: [] - # # Set the container (internal) and service (external) ports for this listen. - # # These values should normally be the same. If your environment requires they - # # differ, note that Kong will match routes based on the containerPort only. - # - containerPort: 9000 - # servicePort: 9000 - # protocol: TCP - # # Optionally set a static nodePort if the service type is NodePort - # # nodePort: 32080 - # # Additional listen parameters, e.g. "ssl", "reuseport", "backlog=16384" - # # "ssl" is required for SNI-based routes. It is not supported on versions <2.0 - # parameters: [] - - # Kong proxy ingress settings. - # Note: You need this only if you are using another Ingress Controller - # to expose Kong outside the k8s cluster. - ingress: - # Enable/disable exposure using ingress. - enabled: false - ingressClassName: - # To specify annotations or labels for the ingress, add them to the respective - # "annotations" or "labels" dictionaries below. - annotations: {} - labels: {} - # Ingress hostname - hostname: - # Ingress path (when used with hostname above). - path: / - # Each path in an Ingress is required to have a corresponding path type (when used with hostname above). (ImplementationSpecific/Exact/Prefix) - pathType: ImplementationSpecific - # Ingress hosts. Use this instead of or in combination with hostname to specify multiple ingress host configurations - hosts: [] - # - host: kong-proxy.example.com - # paths: - # # Ingress path. - # - path: /* - # # Each path in an Ingress is required to have a corresponding path type. (ImplementationSpecific/Exact/Prefix) - # pathType: ImplementationSpecific - # - host: kong-proxy-other.example.com - # paths: - # # Ingress path. - # - path: /other - # # Each path in an Ingress is required to have a corresponding path type. (ImplementationSpecific/Exact/Prefix) - # pathType: ImplementationSpecific - # backend: - # service: - # name: kong-other-proxy - # port: - # number: 80 - # - # TLS secret(s) - # tls: kong-proxy.example.com-tls - # Or if multiple hosts/secrets needs to be configured: - # tls: - # - secretName: kong-proxy.example.com-tls - # hosts: - # - kong-proxy.example.com - # - secretName: kong-proxy-other.example.com-tls - # hosts: - # - kong-proxy-other.example.com - - # Optionally specify a static load balancer IP. - # loadBalancerIP: - -# Specify Kong UDP proxy service configuration -# Currently, LoadBalancer type Services are generally limited to a single transport protocol -# Multi-protocol Services are an alpha feature as of Kubernetes 1.20: -# https://kubernetes.io/docs/concepts/services-networking/service/#load-balancers-with-mixed-protocol-types -# You should enable this Service if you proxy UDP traffic, and configure UDP stream listens under it -udpProxy: - # Enable creating a Kubernetes service for UDP proxying - enabled: false - type: LoadBalancer - loadBalancerClass: - # To specify annotations or labels for the proxy service, add them to the respective - # "annotations" or "labels" dictionaries below. - annotations: {} - # service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" - labels: {} - # Optionally specify a static load balancer IP. - # loadBalancerIP: - - # Define stream (UDP) listen - # To enable, remove "[]", uncomment the section below, and select your desired - # ports and parameters. Listens are dynamically named after their servicePort, - # e.g. "stream-9000" for the below. - stream: [] - # # Set the container (internal) and service (external) ports for this listen. - # # These values should normally be the same. If your environment requires they - # # differ, note that Kong will match routes based on the containerPort only. - # - containerPort: 9000 - # servicePort: 9000 - # protocol: UDP - # # Optionally set a static nodePort if the service type is NodePort - # # nodePort: 32080 - # # Additional listen parameters, e.g. "ssl", "reuseport", "backlog=16384" - # # "ssl" is required for SNI-based routes. It is not supported on versions <2.0 - # parameters: [] - -# Custom Kong plugins can be loaded into Kong by mounting the plugin code -# into the file-system of Kong container. -# The plugin code should be present in ConfigMap or Secret inside the same -# namespace as Kong is being installed. -# The `name` property refers to the name of the ConfigMap or Secret -# itself, while the pluginName refers to the name of the plugin as it appears -# in Kong. -# Subdirectories (which are optional) require separate ConfigMaps/Secrets. -# "path" indicates their directory under the main plugin directory: the example -# below will mount the contents of kong-plugin-rewriter-migrations at "/opt/kong/rewriter/migrations". -plugins: {} - # configMaps: - # - pluginName: rewriter - # name: kong-plugin-rewriter - # subdirectories: - # - name: kong-plugin-rewriter-migrations - # path: migrations - # secrets: - # - pluginName: rewriter - # name: kong-plugin-rewriter -# Inject specified secrets as a volume in Kong Container at path /etc/secrets/{secret-name}/ -# This can be used to override default SSL certificates. -# Be aware that the secret name will be used verbatim, and that certain types -# of punctuation (e.g. `.`) can cause issues. -# Example configuration -# secretVolumes: -# - kong-proxy-tls -# - kong-admin-tls -secretVolumes: [] - -# Enable/disable migration jobs, and set annotations for them -migrations: - # Enable pre-upgrade migrations (run "kong migrations up") - preUpgrade: true - # Enable post-upgrade migrations (run "kong migrations finish") - postUpgrade: true - # Annotations to apply to migrations job pods - # By default, these disable service mesh sidecar injection for Istio and Kuma, - # as the sidecar containers do not terminate and prevent the jobs from completing - annotations: - sidecar.istio.io/inject: false - # Additional annotations to apply to migration jobs - # This is helpful in certain non-Helm installation situations such as GitOps - # where additional control is required around this job creation. - jobAnnotations: {} - # Optionally set a backoffLimit. If none is set, Jobs will use the cluster default - backoffLimit: - # Optionally set to specify the time-to-live (TTL) for a pod after it has completed its execution before automatic deletion. If left unset, pod lifetime is indefinite. - ttlSecondsAfterFinished: - resources: {} - # Example reasonable setting for "resources": - # resources: - # limits: - # cpu: 100m - # memory: 256Mi - # requests: - # cpu: 50m - # memory: 128Mi - ## Optionally specify any extra sidecar containers to be included in the deployment - ## See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core - ## Keep in mind these containers should be terminated along with the main - ## migration containers - # sidecarContainers: - # - name: sidecar - # image: sidecar:latest - -# Kong's configuration for DB-less mode -# Note: Use this section only if you are deploying Kong in DB-less mode -# and not as an Ingress Controller. -dblessConfig: - # Either Kong's configuration is managed from an existing ConfigMap (with Key: kong.yml) - configMap: "" - # Or Kong's configuration is managed from an existing Secret (with Key: kong.yml) - secret: "" - # Or the configuration is passed in full-text below - config: | - # # _format_version: "1.1" - # # services: - # # # Example configuration - # # # - name: example.com - # # # url: http://example.com - # # # routes: - # # # - name: example - # # # paths: - # # # - "/example" - ## Optionally specify any extra sidecar containers to be included in the - ## migration jobs - ## See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core - # sidecarContainers: - # - name: sidecar - # image: sidecar:latest - -# ----------------------------------------------------------------------------- -# Ingress Controller parameters -# ----------------------------------------------------------------------------- - -# Kong Ingress Controller's primary purpose is to satisfy Ingress resources -# created in k8s. It uses CRDs for more fine grained control over routing and -# for Kong specific configuration. -ingressController: - enabled: true - image: - repository: kong/kubernetes-ingress-controller - tag: "3.4" - # Optionally set a semantic version for version-gated features. This can normally - # be left unset. You only need to set this if your tag is not a semver string, - # such as when you are using a "next" tag. Set this to the effective semantic - # version of your tag: for example if using a "next" image for an unreleased 3.1.0 - # version, set this to "3.1.0". - effectiveSemver: - args: [] - - gatewayDiscovery: - enabled: false - generateAdminApiService: false - adminApiService: - namespace: "" - name: "" - - # Specify individual namespaces to watch for ingress configuration. By default, - # when no namespaces are set, the controller watches all namespaces and uses a - # ClusterRole to grant access to Kubernetes resources. When you list specific - # namespaces, the controller will watch those namespaces only and will create - # namespaced-scoped Roles for each of them. The controller will still use a - # ClusterRole for cluster-scoped resources. - # Requires controller 2.0.0 or newer. - watchNamespaces: [] - - # Specify Kong Ingress Controller configuration via environment variables - env: - # The controller disables TLS verification by default because Kong - # generates self-signed certificates by default. Set this to false once you - # have installed CA-signed certificates. - kong_admin_tls_skip_verify: true - # If using Kong Enterprise with RBAC enabled, uncomment the section below - # and specify the secret/key containing your admin token. - # kong_admin_token: - # valueFrom: - # secretKeyRef: - # name: CHANGEME-admin-token-secret - # key: CHANGEME-admin-token-key - - # This section is any customer specific environments variables that doesn't require CONTROLLER_ prefix. - # Example as below, uncomment if required and add additional attributes as required. - # customEnv: - # TZ: "Europe/Berlin" - - # Load all ConfigMap or Secret keys as environment variables: - # https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables - envFrom: [] - - admissionWebhook: - matchPolicy: Equivalent - enabled: true - # Limit the `secrets.plugins.validation.ingress-controller.konghq.com` webhook - # to only Secrets with the appropriate KIC "konghq.com/validate" label. - filterSecrets: false - failurePolicy: Ignore - port: 8080 - certificate: - provided: false - namespaceSelector: {} - # ObjectSelector specifies which objects to match against validations.kong.konghq.com webhook webhook - objectSelector: - matchExpressions: - - key: owner - operator: NotIn - values: - - helm - # Specifiy the secretName when the certificate is provided via a TLS secret - # secretName: "" - # Specifiy the CA bundle of the provided certificate. - # This is a PEM encoded CA bundle which will be used to validate the webhook certificate. If unspecified, system trust roots on the apiserver are used. - # caBundle: - # | Add the CA bundle content here. - service: - # Specify custom labels for the validation webhook service. - labels: {} - # Tune the default Kubernetes timeoutSeconds of 10 seconds - # timeoutSeconds: 10 - - ingressClass: kong - # annotations for IngressClass resource (Kubernetes 1.18+) - ingressClassAnnotations: {} - - ## Define any volumes and mounts you want present in the ingress controller container - ## Volumes are defined above in deployment.userDefinedVolumes - # userDefinedVolumeMounts: - # - name: "volumeName" - # mountPath: "/opt/user/dir/mount" - - rbac: - # Specifies whether RBAC resources should be created - create: true - - # general properties - livenessProbe: - httpGet: - path: "/healthz" - port: 10254 - scheme: HTTP - initialDelaySeconds: 5 - timeoutSeconds: 5 - periodSeconds: 10 - successThreshold: 1 - failureThreshold: 3 - readinessProbe: - httpGet: - path: "/readyz" - port: 10254 - scheme: HTTP - initialDelaySeconds: 5 - timeoutSeconds: 5 - periodSeconds: 10 - successThreshold: 1 - failureThreshold: 3 - resources: {} - # Example reasonable setting for "resources": - # resources: - # limits: - # cpu: 100m - # memory: 256Mi - # requests: - # cpu: 50m - # memory: 128Mi - - konnect: - enabled: false - # Deprecated: Specifies a Konnect Runtime Group's ID that the controller will push its data-plane config to. - runtimeGroupID: "" - # Specifies a Konnect Control Plane's ID that the controller will push its data-plane config to. - controlPlaneID: "" - - # Specifies a Konnect API hostname that the controller will use to push its data-plane config to. - # By default, this is set to US region's production API hostname. - # If you are using a different region, you can set this to the appropriate hostname (e.g. "eu.kic.api.konghq.com"). - apiHostname: "us.kic.api.konghq.com" - - # Specifies a secret that contains a client TLS certificate that the controller - # will use to authenticate against Konnect APIs. - tlsClientCertSecretName: "konnect-client-tls" - - license: - # Specifies whether the controller should fetch a license from Konnect and apply it to managed Gateways. - enabled: false - - adminApi: - tls: - client: - # Enable TLS client authentication for the Admin API. - enabled: false - - # If set to false, Helm will generate certificates for you. - # If set to true, you are expected to provide your own secret (see secretName, caSecretName). - certProvided: false - - # Client TLS certificate/key pair secret name that Ingress Controller will use to authenticate with Kong Admin API. - # If certProvided is set to false, it is optional (can be specified though if you want to force Helm to use - # a specific secret name). - secretName: "" - - # CA TLS certificate/key pair secret name that the client TLS certificate is signed by. - # If certProvided is set to false, it is optional (can be specified though if you want to force Helm to use - # a specific secret name). - caSecretName: "" - - -# ----------------------------------------------------------------------------- -# Postgres sub-chart parameters -# ----------------------------------------------------------------------------- - -# Kong can run without a database or use either Postgres or Cassandra -# as a backend datatstore for it's configuration. -# By default, this chart installs Kong without a database. - -# If you would like to use a database, there are two options: -# - (recommended) Deploy and maintain a database and pass the connection -# details to Kong via the `env` section. -# - You can use the below `postgresql` sub-chart to deploy a database -# along-with Kong as part of a single Helm release. Running a database -# independently is recommended for production, but the built-in Postgres is -# useful for quickly creating test instances. - -# PostgreSQL chart documentation: -# https://github.com/bitnami/charts/blob/master/bitnami/postgresql/README.md -# -# WARNING: by default, the Postgres chart generates a random password each -# time it upgrades, which breaks access to existing volumes. You should set a -# password explicitly: -# https://github.com/Kong/charts/blob/main/charts/kong/FAQs.md#kong-fails-to-start-after-helm-upgrade-when-postgres-is-used-what-do-i-do - -postgresql: - enabled: false - auth: - username: kong - database: kong - image: - # use postgres < 14 until is https://github.com/Kong/kong/issues/8533 resolved and released - # enterprise (kong-gateway) supports postgres 14 - tag: 13.11.0-debian-11-r20 - service: - ports: - postgresql: "5432" - -# ----------------------------------------------------------------------------- -# Configure cert-manager integration -# ----------------------------------------------------------------------------- - -certificates: - enabled: false - - # Set either `issuer` or `clusterIssuer` to the name of the desired cert manager issuer - # If left blank a built in self-signed issuer will be created and utilized - issuer: "" - clusterIssuer: "" - - # Set proxy.enabled to true to issue default kong-proxy certificate with cert-manager - proxy: - enabled: true - # Set `issuer` or `clusterIssuer` to name of alternate cert-manager clusterIssuer to override default - # self-signed issuer. - issuer: "" - clusterIssuer: "" - # Use commonName and dnsNames to set the common name and dns alt names which this - # certificate is valid for. Wildcard records are supported by the included self-signed issuer. - commonName: "app.example" - # Remove the "[]" and uncomment/change the examples to add SANs - dnsNames: [] - # - "app.example" - # - "*.apps.example" - # - "*.kong.example" - - # Set admin.enabled true to issue kong admin api and manager certificate with cert-manager - admin: - enabled: true - # Set `issuer` or `clusterIssuer` to name of alternate cert-manager clusterIssuer to override default - # self-signed issuer. - issuer: "" - clusterIssuer: "" - # Use commonName and dnsNames to set the common name and dns alt names which this - # certificate is valid for. Wildcard records are supported by the included self-signed issuer. - commonName: "kong.example" - # Remove the "[]" and uncomment/change the examples to add SANs - dnsNames: [] - # - "manager.kong.example" - - # Set portal.enabled to true to issue a developer portal certificate with cert-manager - portal: - enabled: true - # Set `issuer` or `clusterIssuer` to name of alternate cert-manager clusterIssuer to override default - # self-signed issuer. - issuer: "" - clusterIssuer: "" - # Use commonName and dnsNames to set the common name and dns alt names which this - # certificate is valid for. Wildcard records are supported by the included self-signed issuer. - commonName: "developer.example" - # Remove the "{}" and uncomment/change the examples to add SANs - dnsNames: [] - # - "manager.kong.example" - - # Set cluster.enabled true to issue kong hybrid mtls certificate with cert-manager - cluster: - enabled: true - # Issuers used by the control and data plane releases must match for this certificate. - issuer: "" - clusterIssuer: "" - commonName: "kong_clustering" - dnsNames: [] - -# ----------------------------------------------------------------------------- -# Miscellaneous parameters -# ----------------------------------------------------------------------------- - -waitImage: - # Wait for the database to come online before starting Kong or running migrations - # If Kong is to access the database through a service mesh that injects a sidecar to - # Kong's container, this must be disabled. Otherwise there'll be a deadlock: - # InitContainer waiting for DB access that requires the sidecar, and the sidecar - # waiting for InitContainers to finish. - enabled: true - # Optionally specify an image that provides bash for pre-migration database - # checks. If none is specified, the chart uses the Kong image. The official - # Kong images provide bash - # repository: bash - # tag: 5 - pullPolicy: IfNotPresent - -# update strategy -updateStrategy: {} - # type: RollingUpdate - # rollingUpdate: - # maxSurge: "100%" - # maxUnavailable: "0%" - -# If you want to specify resources, uncomment the following -# lines, adjust them as necessary, and remove the curly braces after 'resources:'. -resources: {} - # limits: - # cpu: 1 - # memory: 2G - # requests: - # cpu: 1 - # memory: 2G - -# readinessProbe for Kong pods -readinessProbe: - httpGet: - path: "/status/ready" - port: status - scheme: HTTP - initialDelaySeconds: 5 - timeoutSeconds: 5 - periodSeconds: 10 - successThreshold: 1 - failureThreshold: 3 - -# livenessProbe for Kong pods -livenessProbe: - httpGet: - path: "/status" - port: status - scheme: HTTP - initialDelaySeconds: 5 - timeoutSeconds: 5 - periodSeconds: 10 - successThreshold: 1 - failureThreshold: 3 - -# startupProbe for Kong pods -# startupProbe: -# httpGet: -# path: "/status" -# port: status -# scheme: HTTP -# initialDelaySeconds: 5 -# timeoutSeconds: 5 -# periodSeconds: 2 -# successThreshold: 1 -# failureThreshold: 40 - -# Proxy container lifecycle hooks -# Ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/ -lifecycle: - preStop: - exec: - # kong quit has a default timeout of 10 seconds, and a default wait of 0 seconds. - # Note: together they should be less than the terminationGracePeriodSeconds setting below. - command: - - kong - - quit - - '--wait=15' - -# Sets the termination grace period for pods spawned by the Kubernetes Deployment. -# Ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#hook-handler-execution -terminationGracePeriodSeconds: 30 - -# Affinity for pod assignment -# Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity -# affinity: {} - -# Topology spread constraints for pod assignment (requires Kubernetes >= 1.19) -# Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ -# topologySpreadConstraints: [] - -# Tolerations for pod assignment -# Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ -tolerations: [] - -# Node labels for pod assignment -# Ref: https://kubernetes.io/docs/user-guide/node-selection/ -nodeSelector: {} - -# Annotation to be added to Kong pods -podAnnotations: - kuma.io/gateway: enabled - traffic.sidecar.istio.io/includeInboundPorts: "" - -# Labels to be added to Kong pods -podLabels: {} - -# Kong pod count. -# It has no effect when autoscaling.enabled is set to true -replicaCount: 1 - -# Annotations to be added to Kong deployment -deploymentAnnotations: {} - -# Enable autoscaling using HorizontalPodAutoscaler -# When configuring an HPA, you must set resource requests on all containers via -# "resources" and, if using the controller, "ingressController.resources" in values.yaml -autoscaling: - enabled: false - minReplicas: 2 - maxReplicas: 5 - behavior: {} - ## targetCPUUtilizationPercentage only used if the cluster doesn't support autoscaling/v2 or autoscaling/v2beta - targetCPUUtilizationPercentage: - ## Otherwise for clusters that do support autoscaling/v2 or autoscaling/v2beta, use metrics - metrics: - - type: Resource - resource: - name: cpu - target: - type: Utilization - averageUtilization: 80 - -# Kong Pod Disruption Budget -podDisruptionBudget: - enabled: false - # Uncomment only one of the following when enabled is set to true - # maxUnavailable: "50%" - # minAvailable: "50%" - -podSecurityPolicy: - enabled: false - labels: {} - annotations: {} - spec: - privileged: false - fsGroup: - rule: RunAsAny - runAsUser: - rule: RunAsAny - runAsGroup: - rule: RunAsAny - seLinux: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - 'configMap' - - 'secret' - - 'emptyDir' - - 'projected' - allowPrivilegeEscalation: false - hostNetwork: false - hostIPC: false - hostPID: false - # Make the root filesystem read-only. This is not compatible with Kong Enterprise <1.5. - # If you use Kong Enterprise <1.5, this must be set to false. - readOnlyRootFilesystem: true - - -priorityClassName: "" - -# securityContext for Kong pods. -securityContext: {} - -# securityContext for containers. -containerSecurityContext: - readOnlyRootFilesystem: true - allowPrivilegeEscalation: false - runAsUser: 1000 - runAsNonRoot: true - seccompProfile: - type: RuntimeDefault - capabilities: - drop: - - ALL - -## Optional DNS configuration for Kong pods -# dnsPolicy: ClusterFirst -# dnsConfig: -# nameservers: -# - "10.100.0.10" -# options: -# - name: ndots -# value: "5" -# searches: -# - default.svc.cluster.local -# - svc.cluster.local -# - cluster.local -# - us-east-1.compute.internal - -serviceMonitor: - # Specifies whether ServiceMonitor for Prometheus operator should be created - # If you wish to gather metrics from a Kong instance with the proxy disabled (such as a hybrid control plane), see: - # https://github.com/Kong/charts/blob/main/charts/kong/README.md#prometheus-operator-integration - enabled: false - trustCRDsExist: false - # interval: 30s - # Specifies namespace, where ServiceMonitor should be installed - # namespace: monitoring - # labels: - # foo: bar - # targetLabels: - # - foo - - # honorLabels: false - # metricRelabelings: [] - # relabelings: [] - -# ----------------------------------------------------------------------------- -# Kong Enterprise parameters -# ----------------------------------------------------------------------------- - -# Toggle Kong Enterprise features on or off -# RBAC and SMTP configuration have additional options that must all be set together -# Other settings should be added to the "env" settings below -enterprise: - enabled: false - # Kong Enterprise license secret name - # This secret must contain a single 'license' key, containing your base64-encoded license data - # The license secret is required to unlock all Enterprise features. If you omit it, - # Kong will run in free mode, with some Enterprise features disabled. - # license_secret: kong-enterprise-license - vitals: - enabled: true - portal: - enabled: false - rbac: - enabled: false - admin_gui_auth: basic-auth - # If RBAC is enabled, this Secret must contain an admin_gui_session_conf key - # The key value must be a secret configuration, following the example at - # https://docs.konghq.com/enterprise/latest/kong-manager/authentication/sessions - # If using 3.6+ and OIDC, session configuration is instead handled in the auth configuration, - # and this field can be left empty. - session_conf_secret: "kong-session-config" # CHANGEME - # If admin_gui_auth is not set to basic-auth, provide a secret name which - # has an admin_gui_auth_conf key containing the plugin config JSON - admin_gui_auth_conf_secret: CHANGEME-admin-gui-auth-conf-secret - # For configuring emails and SMTP, please read through: - # https://docs.konghq.com/enterprise/latest/developer-portal/configuration/smtp - # https://docs.konghq.com/enterprise/latest/kong-manager/networking/email - smtp: - enabled: false - portal_emails_from: none@example.com - portal_emails_reply_to: none@example.com - admin_emails_from: none@example.com - admin_emails_reply_to: none@example.com - smtp_admin_emails: none@example.com - smtp_host: smtp.example.com - smtp_port: 587 - smtp_auth_type: '' - smtp_ssl: nil - smtp_starttls: true - auth: - # If your SMTP server does not require authentication, this section can - # be left as-is. If smtp_username is set to anything other than an empty - # string, you must create a Secret with an smtp_password key containing - # your SMTP password and specify its name here. - smtp_username: '' # e.g. postmaster@example.com - smtp_password_secret: CHANGEME-smtp-password - -manager: - # Enable creating a Kubernetes service for Kong Manager - enabled: true - type: NodePort - loadBalancerClass: - # To specify annotations or labels for the Manager service, add them to the respective - # "annotations" or "labels" dictionaries below. - annotations: {} - # service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" - labels: {} - - http: - # Enable plaintext HTTP listen for Kong Manager - enabled: true - servicePort: 8002 - containerPort: 8002 - # Set a nodePort which is available if service type is NodePort - # nodePort: 32080 - # Additional listen parameters, e.g. "reuseport", "backlog=16384" - parameters: [] - - tls: - # Enable HTTPS listen for Kong Manager - enabled: true - servicePort: 8445 - containerPort: 8445 - # Set a nodePort which is available if service type is NodePort - # nodePort: 32443 - # Additional listen parameters, e.g. "reuseport", "backlog=16384" - parameters: - - http2 - - ingress: - # Enable/disable exposure using ingress. - enabled: false - ingressClassName: - # TLS secret name. - # tls: kong-manager.example.com-tls - # Ingress hostname - hostname: - # Map of ingress annotations. - annotations: {} - # Ingress path. - path: / - # Each path in an Ingress is required to have a corresponding path type. (ImplementationSpecific/Exact/Prefix) - pathType: ImplementationSpecific - -portal: - # Enable creating a Kubernetes service for the Developer Portal - enabled: true - type: NodePort - loadBalancerClass: - # To specify annotations or labels for the Portal service, add them to the respective - # "annotations" or "labels" dictionaries below. - annotations: {} - # service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" - labels: {} - - http: - # Enable plaintext HTTP listen for the Developer Portal - enabled: true - servicePort: 8003 - containerPort: 8003 - # Set a nodePort which is available if service type is NodePort - # nodePort: 32080 - # Additional listen parameters, e.g. "reuseport", "backlog=16384" - parameters: [] - - tls: - # Enable HTTPS listen for the Developer Portal - enabled: true - servicePort: 8446 - containerPort: 8446 - # Set a nodePort which is available if service type is NodePort - # nodePort: 32443 - # Additional listen parameters, e.g. "reuseport", "backlog=16384" - parameters: - - http2 - - ingress: - # Enable/disable exposure using ingress. - enabled: false - ingressClassName: - # TLS secret name. - # tls: kong-portal.example.com-tls - # Ingress hostname - hostname: - # Map of ingress annotations. - annotations: {} - # Ingress path. - path: / - # Each path in an Ingress is required to have a corresponding path type. (ImplementationSpecific/Exact/Prefix) - pathType: ImplementationSpecific - -portalapi: - # Enable creating a Kubernetes service for the Developer Portal API - enabled: true - type: NodePort - loadBalancerClass: - # To specify annotations or labels for the Portal API service, add them to the respective - # "annotations" or "labels" dictionaries below. - annotations: {} - # service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" - labels: {} - - http: - # Enable plaintext HTTP listen for the Developer Portal API - enabled: true - servicePort: 8004 - containerPort: 8004 - # Set a nodePort which is available if service type is NodePort - # nodePort: 32080 - # Additional listen parameters, e.g. "reuseport", "backlog=16384" - parameters: [] - - tls: - # Enable HTTPS listen for the Developer Portal API - enabled: true - servicePort: 8447 - containerPort: 8447 - # Set a nodePort which is available if service type is NodePort - # nodePort: 32443 - # Additional listen parameters, e.g. "reuseport", "backlog=16384" - parameters: - - http2 - - ingress: - # Enable/disable exposure using ingress. - enabled: false - ingressClassName: - # TLS secret name. - # tls: kong-portalapi.example.com-tls - # Ingress hostname - hostname: - # Map of ingress annotations. - annotations: {} - # Ingress path. - path: / - # Each path in an Ingress is required to have a corresponding path type. (ImplementationSpecific/Exact/Prefix) - pathType: ImplementationSpecific - -clustertelemetry: - enabled: false - # To specify annotations or labels for the cluster telemetry service, add them to the respective - # "annotations" or "labels" dictionaries below. - annotations: {} - # service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" - labels: {} - - tls: - enabled: false - servicePort: 8006 - containerPort: 8006 - parameters: [] - - type: ClusterIP - loadBalancerClass: - - # Kong clustertelemetry ingress settings. Useful if you want to split - # CP and DP in different clusters. - ingress: - # Enable/disable exposure using ingress. - enabled: false - ingressClassName: - # TLS secret name. - # tls: kong-clustertelemetry.example.com-tls - # Ingress hostname - hostname: - # Map of ingress annotations. - annotations: {} - # Ingress path. - path: / - # Each path in an Ingress is required to have a corresponding path type. (ImplementationSpecific/Exact/Prefix) - pathType: ImplementationSpecific - -extraConfigMaps: [] -# extraConfigMaps: -# - name: my-config-map -# mountPath: /mount/to/my/location -# subPath: my-subpath # Optional, if you wish to mount a single key and not the entire ConfigMap - -extraSecrets: [] -# extraSecrets: -# - name: my-secret -# mountPath: /mount/to/my/location -# subPath: my-subpath # Optional, if you wish to mount a single key and not the entire ConfigMap - -extraObjects: [] -# extraObjects: -# - apiVersion: configuration.konghq.com/v1 -# kind: KongClusterPlugin -# metadata: -# name: prometheus -# config: -# per_consumer: false -# plugin: prometheus diff --git a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/BUILD-README.md b/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/BUILD-README.md deleted file mode 100644 index 1258f9c..0000000 --- a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/BUILD-README.md +++ /dev/null @@ -1,53 +0,0 @@ -# Rancher Monitoring CRD 버전 갱신 가이드 - -- 해당 차트는 `rancher-monitoring`을 배포 전에 배포되어야 하는 crd 파일을 관리하는 차트이다. -- 갱신 작업 시 `rancher-monitoring`에 대한 갱신 작업도 같이 진행되어야 한다. - -## 1. git 작업 환경 구성 - -- 서비스 카탈로그 git 다운로드 -``` -$ git clone https://github.com/paasup/service-catalog.git -``` - -- 작업 브랜치로 체크아웃 -``` -$ git checkout -b update-monitoring/104.1.2+up57.0.3 -``` - -## 2. helm chart upgrade - -### 1) 파일 삭제 - -- 수정 또는 추가한 파일을 제외한 나머지 파일을 삭제한다. - ``` sh - # chart 디렉토리로 이동 - cd ~/service-catalog/charts/rancher-monitoring-crd - - # 파일 삭제 전 삭제할 파일 목록 확인 - find . -mindepth 1 \( -name "CUSTOM-README.md" -o -name "BUILD-README.md" -o -name "custom-values.yaml" \) -prune -o -print - - # 파일 삭제 - find . -mindepth 1 \(-name "CUSTOM-README.md" -o -name "BUILD-README.md" -o -name "custom-values.yaml" \) -prune -o -exec rm -rf {} + - ``` - -### 2) 차트 다운로드 - -- 해당 차트는 rancher에서 관리 중인 [charts](https://github.com/rancher/charts)에서 다운로드한다. -- rancher/charts 클론 - ``` sh - # 작업 디렉토리로 이동 - $ cd ~/ - - # rancher 버전 별로 branch가 관리된다. - # rancher 버전에 맞추어 필요한 버전의 chart를 클론한다. - $ git clone -b release-v2.9 https://github.com/rancher/charts - ``` -- 파일 복사 - ``` sh - $ cd service-catalog/charts/rancher-monitoring-crd/ - $ cp -r ~/charts/charts/rancher-monitoring-crd/104.1.2+up57.0.3/* ./ - ``` -## 3. git push 및 tag 추가 -- **rancher-monitoring에 대한 갱신 작업 진행 후 git push를 진행한다.** -- **push 방법은 rancher-monitoring의 BUILD-README.md를 참조하여 진행한다.** diff --git a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/CUSTOM-README.md b/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/CUSTOM-README.md deleted file mode 100644 index 6ce8cfe..0000000 --- a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/CUSTOM-README.md +++ /dev/null @@ -1,26 +0,0 @@ - -# Rancher Monitoring CRD 배포 - -## 1. 배포 방법 - -- `rancher-monitoring`을 배포하기 전 해당 차트를 배포해야 한다. -- 명령어 - - ``` sh - $ helm upgrade rancher-monitoring-crd --install \ - --namespace cattle-monitoring-system --create-namespace \ - ../rancher-monitoring-crd -f ./custom-values.yaml - ``` - - -## 2.custom-values.yaml 설명 - -- custom-values.yaml에 정의된 값에 대한 설명이다. - -### 1) 오프라인 설정 - -- private 환경 배포시 사용한다. - -| Name | 설명 | 기본값 | -| ---------------------- | ------------------------------------------------------------ | ------ | -| `global.cattle.systemDefaultRegistry` | 오프라인 설치 시에 설정.
paasup 설치시에는 "paasup.io"로 설정 | `""` | \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/Chart.yaml b/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/Chart.yaml deleted file mode 100644 index e5e2a88..0000000 --- a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/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: v2 -description: Installs the CRDs for rancher-monitoring. -name: rancher-monitoring-crd -type: application -version: 104.1.2+up57.0.3 diff --git a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/README.md b/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/README.md deleted file mode 100644 index e0b63e0..0000000 --- a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/custom-values.yaml b/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/custom-values.yaml deleted file mode 100644 index fbe9cb3..0000000 --- a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/custom-values.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# global: -# cattle: -# # offline 배포 시 설정 -# systemDefaultRegistry: "paasup.io" \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/files/crd-manifest.tgz b/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/files/crd-manifest.tgz deleted file mode 100644 index 4b57af9438f15e755197ada98bb369cc8644a05d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308570 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 dFc}T)5i! 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

k3+RMvUj`0+hB~Z%!eMPIHmG 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

)sb-WZ*=i&f_iy=zsNRsXT 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%0AF_Suiz! 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 R{{a91|NqXxz=Hq?Dgemy!s-A3 diff --git a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/_helpers.tpl b/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/_helpers.tpl deleted file mode 100644 index 146bc45..0000000 --- a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/_helpers.tpl +++ /dev/null @@ -1,30 +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 -}} - diff --git a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/jobs.yaml b/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/jobs.yaml deleted file mode 100644 index 6955e3b..0000000 --- a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/jobs.yaml +++ /dev/null @@ -1,102 +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: false - runAsUser: 0 - containers: - - name: create-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/sh - - -c - - > - echo "Applying CRDs..."; - mkdir -p /etc/crd; - base64 -d /etc/config/crd-manifest.tgz.b64 | tar -xzv -C /etc/crd; - kubectl replace -Rf /etc/crd || kubectl create -Rf /etc/crd; - echo "Done!" - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - 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 }} - 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: false - runAsUser: 0 - containers: - - name: delete-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/sh - - -c - - > - echo "Deleting CRDs..."; - mkdir -p /etc/crd; - base64 -d /etc/config/crd-manifest.tgz.b64 | tar -xzv -C /etc/crd; - kubectl delete --ignore-not-found=true -Rf /etc/crd; - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - 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 }} - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest diff --git a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/manifest.yaml b/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/manifest.yaml deleted file mode 100644 index 8dc9dfb..0000000 --- a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/manifest.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Chart.Name }}-manifest - namespace: {{ .Release.Namespace }} -data: - crd-manifest.tgz.b64: - {{- .Files.Get "files/crd-manifest.tgz" | b64enc | indent 4 }} diff --git a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/rbac.yaml b/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/rbac.yaml deleted file mode 100644 index a4d498b..0000000 --- a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/rbac.yaml +++ /dev/null @@ -1,76 +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', 'update', 'list'] -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ .Chart.Name }}-manager -{{- end }} ---- -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 ---- -{{- if .Values.global.cattle.psp.enabled }} -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: 'RunAsAny' - 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 }} diff --git a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/values.yaml b/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/values.yaml deleted file mode 100644 index 99e6360..0000000 --- a/manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3/values.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Default values for rancher-monitoring-crd. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - -image: - repository: rancher/shell - tag: v0.2.1 - -nodeSelector: {} - -tolerations: [] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/BUILD-README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/BUILD-README.md deleted file mode 100644 index 3bbc9c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/BUILD-README.md +++ /dev/null @@ -1,80 +0,0 @@ -# Rancher Monitoring 버전 갱신 가이드 - -- 해당 차트는 `rancher-monitoring-crd`가 배포된 후 배포되어야 한다. -- 갱신 작업 시 `rancher-monitoring-crd`에 대한 갱신 작업도 같이 진행되어야 한다. - -## 1. git 작업 환경 구성 - -- 서비스 카탈로그 git 다운로드 -``` -$ git clone https://github.com/paasup/service-catalog.git -``` - -- 작업 브랜치로 체크아웃 -``` -$ git checkout -b update-monitoring/104.1.2+up57.0.3 -``` - -## 2. helm chart upgrade - -### 1) 파일 삭제 - -- 수정 또는 추가한 파일을 제외한 나머지 파일을 삭제한다. - ``` sh - # chart 디렉토리로 이동 - cd ~/service-catalog/charts/rancher-monitoring - - # 파일 삭제 전 삭제할 파일 목록 확인 - find . -mindepth 1 \( -name "CUSTOM-README.md" -o -name "BUILD-README.md" -o -name "custom-values.yaml" \) -prune -o -print - - # 파일 삭제 - find . -mindepth 1 \(-name "CUSTOM-README.md" -o -name "BUILD-README.md" -o -name "custom-values.yaml" \) -prune -o -exec rm -rf {} + - ``` - -### 2) 차트 다운로드 - -- 해당 차트는 rancher에서 관리 중인 [charts](https://github.com/rancher/charts)에서 다운로드한다. -- rancher/charts 클론 - ``` sh - # 작업 디렉토리로 이동 - $ cd ~/ - - # rancher 버전 별로 branch가 관리된다. - # rancher 버전에 맞추어 필요한 버전의 chart를 클론한다. - $ git clone -b release-v2.9 https://github.com/rancher/charts - ``` -- 파일 복사 - ``` sh - $ cd service-catalog/charts/rancher-monitoring/ - $ cp -r ~/charts/charts/rancher-monitoring/104.1.2+up57.0.3/* ./ - ``` -## 3. git push 및 tag 추가 -- **push 전에 rancher-monitoring-crd에 대한 갱신 작업을 완료 한 후 작업한다.** - -- 갱신작업 진행후 commit -``` -$ git add ../rancher-monitoring-crd -$ git add ../rancher-monitoring -$ git commit -m "update rancher-monitoring/104.1.2+up57.0.3" -``` - -- main 브랜치에 체크아웃 후 merge -``` -$ git checkout main -$ git merge update-rancher-monitoring/104.1.2+up57.0.3 -``` - -- git에 push 후 작업 브랜치 삭제 -``` -$ git push -u origin main -$ git branch -d update-rancher-monitoring/104.1.2+up57.0.3 -``` - -- git tag 추가 후 push -``` -$ git tag rancher-monitoring-crd/104.1.2+up57.0.3 -$ git push origin rancher-monitoring-crd/104.1.2+up57.0.3 - -$ git tag rancher-monitoring/104.1.2+up57.0.3 -$ git push origin rancher-monitoring/104.1.2+up57.0.3 -``` diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/CHANGELOG.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/CHANGELOG.md deleted file mode 100644 index 8178169..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/CONTRIBUTING.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/CONTRIBUTING.md deleted file mode 100644 index f6ce2a3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/CUSTOM-README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/CUSTOM-README.md deleted file mode 100644 index a39277a..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/CUSTOM-README.md +++ /dev/null @@ -1,118 +0,0 @@ - -# Rancher Monitoring 배포 - -## 1. 배포 방법 - -- 배포 전 `rancher-monitoring-crd`가 배포되었는 지 확인 후 배포한다. -- 명령어 - - ``` sh - $ helm upgrade rancher-monitoring --install \ - --namespace cattle-monitoring-system --create-namespace \ - ../rancher-monitoring -f ./custom-values.yaml - ``` - - -## 2.custom-values.yaml 설명 - -- custom-values.yaml에 정의된 값에 대한 설명이다. - -### 1) 오프라인 설정 -- private 환경 배포시 사용한다. - -| Name | 설명 | 기본값 | -| ---------------------- | ------------------------------------------------------------ | ------ | -| `global.cattle.systemDefaultRegistry` | 오프라인 설치 시에 설정.
paasup 설치시에는 "paasup.io"로 설정 | `""` | - -### 2) grafana 설정 - -- grafana의 리소스를 설정한다. - -| Name | 설명 | 기본값 | -| ------------------------ | ---------------------------------- | --------- | -| `grafana.resources` | grafana pod의 resource 설정. | `custom-values.yaml 참조` | - -### 3) prometheus 설정 - -- prometheus의 리소스를 설정한다. -- 리소스 설정시 `retensionSize`의 크기를 volume 크기보다 크게 설정하지 않도록 주의한다. - -| Name | 설명 | 기본값 | -| ------------------------ | ---------------------------------- | --------- | -| `prometheus.prometheusSpec.resources` | prometheus pod의 resource 설정. | `custom-values.yaml 참조` | -| `prometheus.prometheusSpec.scrapeInterval` | prometheus scrape_interval 설정. 수집 주기 설정 | `1m` | -| `prometheus.prometheusSpec.evaluationInterval` | prometheus evaluation_interval 설정. alert에 대한 평가 주기. | `1m` | -| `prometheus.prometheusSpec.retention` | prometheus 메트릭 보관 주기 설정. | `30d` | -| `prometheus.prometheusSpec.retentionSize` | 메트릭 보관 용량 설정. | `10GB` | -| `prometheus.prometheusSpec.storageSpec` | Prometheus의 볼륨 설정. | `10GB` | - -### 4) alertmanager 설정 - -| Name | 설명 | 기본값 | -| ------------------------ | ---------------------------------- | --------- | -| `alertmanager.alertmanagerSpec.resources` | alert manager의 resource 설정. | `custom-values.yaml 참조` | - -### 5) cluster 별 Monitoring 설정 - -- rke, rke2, kubeadm, k3s 4가지 배포판에 대한 모니터링을 지원한다. -- 각 배포판 별 value를 `enabled: true`로 설정하여 메트릭을 수집할 수 있다. - -#### rke2 - -``` yaml -rke2ControllerManager: - enabled: false -rke2Etcd: - enabled: false -rke2Proxy: - enabled: false -rke2Scheduler: - enabled: false -rke2IngressNginx: - enabled: false -``` - -#### rke - -``` yaml -rkeControllerManager: - enabled: false -rkeEtcd: - enabled: false -rkeProxy: - enabled: false -rkeScheduler: - enabled: false -rkeIngressNginx: - enabled: false -``` - -#### kubeadm - -``` yaml -kubeAdmControllerManager: - enabled: false -kubeAdmScheduler: - enabled: false -kubeAdmProxy: - enabled: false -kubeAdmEtcd: - enabled: false -``` - -#### k3s - -``` yaml -k3sServer: - enabled: false -``` - -### 6) ingress nginx - -- 클러스터에 ingress nginx를 배포했을 때 해당 옵션을 `enabled: true`로 설정하여 메트릭 수집할 수 있다. - -``` yaml -ingressNginx: - enabled: false - namespace: ingress-nginx -``` diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/Chart.yaml deleted file mode 100644 index e4f8481..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/Chart.yaml +++ /dev/null @@ -1,126 +0,0 @@ -annotations: - artifacthub.io/license: Apache-2.0 - 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/deploys-on-os: windows - catalog.cattle.io/display-name: Monitoring - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - catalog.cattle.io/namespace: cattle-monitoring-system - catalog.cattle.io/permits-os: linux,windows - catalog.cattle.io/provides-gvr: monitoring.coreos.com.prometheus/v1 - catalog.cattle.io/rancher-version: '>= 2.9.0-0 < 2.10.0-0' - catalog.cattle.io/release-name: rancher-monitoring - catalog.cattle.io/requests-cpu: 4500m - catalog.cattle.io/requests-memory: 4000Mi - catalog.cattle.io/type: cluster-tool - catalog.cattle.io/ui-component: monitoring - catalog.cattle.io/upstream-version: 57.0.3 -apiVersion: v2 -appVersion: v0.72.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: windowsExporter.enabled - name: windowsExporter - repository: file://./charts/windowsExporter -description: kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, - and Prometheus rules combined with documentation and scripts to provide easy to - operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus - Operator. -home: https://github.com/prometheus-operator/kube-prometheus -icon: file://assets/logos/rancher-monitoring.png -keywords: -- operator -- prometheus -- kube-prometheus -kubeVersion: '>=1.19.0-0' -maintainers: -- email: andrew@quadcorps.co.uk - name: andrewgkew -- email: gianrubio@gmail.com - name: gianrubio -- email: github.gkarthiks@gmail.com - name: gkarthiks -- email: kube-prometheus-stack@sisti.pt - name: GMartinez-Sisti -- email: github@jkroepke.de - name: jkroepke -- email: scott@r6by.com - name: scottrigby -- email: miroslav.hadzhiev@gmail.com - name: Xtigyro -- email: quentin.bisson@gmail.com - name: QuentinBisson -name: rancher-monitoring -sources: -- https://github.com/prometheus-community/helm-charts -- https://github.com/prometheus-operator/kube-prometheus -type: application -version: 104.1.2+up57.0.3 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/README.md deleted file mode 100644 index 9baf58b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/README.md +++ /dev/null @@ -1,1080 +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.19+ -- Helm 3+ - -## Get Helm Repository 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 Helm Chart - -```console -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: - -- [prometheus-community/kube-state-metrics](https://github.com/prometheus-community/helm-charts/tree/main/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 Helm Chart - -```console -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 prometheusagents.monitoring.coreos.com -kubectl delete crd prometheuses.monitoring.coreos.com -kubectl delete crd prometheusrules.monitoring.coreos.com -kubectl delete crd scrapeconfigs.monitoring.coreos.com -kubectl delete crd servicemonitors.monitoring.coreos.com -kubectl delete crd thanosrulers.monitoring.coreos.com -``` - -## Upgrading Chart - -```console -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 56.x to 57.x - -This version upgrades Prometheus-Operator to v0.72.0 - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.72.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.72.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.72.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.72.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.72.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusagents.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.72.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.72.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.72.0/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.72.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.72.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 55.x to 56.x - -This version upgrades Prometheus-Operator to v0.71.0, Prometheus to 2.49.1 - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.71.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.71.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.71.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.71.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.71.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusagents.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.71.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.71.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.71.0/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.71.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.71.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 54.x to 55.x - -This version upgrades Prometheus-Operator to v0.70.0 - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.70.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.70.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.70.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.70.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.70.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusagents.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.70.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.70.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.70.0/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.70.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.70.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 53.x to 54.x - -Grafana Helm Chart has bumped to version 7 - -Please note Grafana Helm Chart [changelog](https://github.com/grafana/helm-charts/tree/main/charts/grafana#to-700). - -### From 52.x to 53.x - -This version upgrades Prometheus-Operator to v0.69.1, Prometheus to 2.47.2 - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.69.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.69.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.69.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.69.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.69.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusagents.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.69.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.69.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.69.1/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.69.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.69.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 51.x to 52.x - -This includes the ability to select between using existing secrets or create new secret objects for various thanos config. The defaults have not changed but if you were setting: - -- `thanosRuler.thanosRulerSpec.alertmanagersConfig` or -- `thanosRuler.thanosRulerSpec.objectStorageConfig` or -- `thanosRuler.thanosRulerSpec.queryConfig` or -- `prometheus.prometheusSpec.thanos.objectStorageConfig` - -you will have to need to set `existingSecret` or `secret` based on your requirement - -For instance, the `thanosRuler.thanosRulerSpec.alertmanagersConfig` used to be configured as follow: - -```yaml -thanosRuler: - thanosRulerSpec: - alertmanagersConfig: - alertmanagers: - - api_version: v2 - http_config: - basic_auth: - username: some_user - password: some_pass - static_configs: - - alertmanager.thanos.io - scheme: http - timeout: 10s -``` - -But it now moved to: - -```yaml -thanosRuler: - thanosRulerSpec: - alertmanagersConfig: - secret: - alertmanagers: - - api_version: v2 - http_config: - basic_auth: - username: some_user - password: some_pass - static_configs: - - alertmanager.thanos.io - scheme: http - timeout: 10s -``` - -or the `thanosRuler.thanosRulerSpec.objectStorageConfig` used to be configured as follow: - -```yaml -thanosRuler: - thanosRulerSpec: - objectStorageConfig: - name: existing-secret-not-created-by-this-chart - key: object-storage-configs.yaml -``` - -But it now moved to: - -```yaml -thanosRuler: - thanosRulerSpec: - objectStorageConfig: - existingSecret: - name: existing-secret-not-created-by-this-chart - key: object-storage-configs.yaml -``` - -### From 50.x to 51.x - -This version upgrades Prometheus-Operator to v0.68.0, Prometheus to 2.47.0 and Thanos to v0.32.2 - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.68.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.68.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.68.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.68.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.68.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusagents.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.68.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.68.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.68.0/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.68.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.68.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 49.x to 50.x - -This version requires Kubernetes 1.19+. - -We do not expect any breaking changes in this version. - -### From 48.x to 49.x - -This version upgrades Prometheus-Operator to v0.67.1, 0, Alertmanager to v0.26.0, Prometheus to 2.46.0 and Thanos to v0.32.0 - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.67.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.67.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.67.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.67.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.67.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusagents.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.67.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.67.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.67.1/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.67.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.67.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 47.x to 48.x - -This version moved all CRDs into a dedicated sub-chart. No new CRDs are introduced in this version. -See [#3548](https://github.com/prometheus-community/helm-charts/issues/3548) for more context. - -We do not expect any breaking changes in this version. - -### From 46.x to 47.x - -This version upgrades Prometheus-Operator to v0.66.0 with new CRDs (PrometheusAgent and ScrapeConfig). - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusagents.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 45.x to 46.x - -This version upgrades Prometheus-Operator to v0.65.1 with new CRDs (PrometheusAgent and ScrapeConfig), Prometheus to v2.44.0 and Thanos to v0.31.0. - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusagents.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.65.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 44.x to 45.x - -This version upgrades Prometheus-Operator to v0.63.0, Prometheus to v2.42.0 and Thanos to v0.30.2. - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 43.x to 44.x - -This version upgrades Prometheus-Operator to v0.62.0, Prometheus to v2.41.0 and Thanos to v0.30.1. - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.62.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -If you have explicitly set `prometheusOperator.admissionWebhooks.failurePolicy`, this value is now always used even when `.prometheusOperator.admissionWebhooks.patch.enabled` is `true` (the default). - -The values for `prometheusOperator.image.tag` & `prometheusOperator.prometheusConfigReloader.image.tag` are now empty by default and the Chart.yaml `appVersion` field is used instead. - -### From 42.x to 43.x - -This version upgrades Prometheus-Operator to v0.61.1, Prometheus to v2.40.5 and Thanos to v0.29.0. - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.61.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 41.x to 42.x - -This includes the overridability of container registry for all containers at the global level using `global.imageRegistry` or per container image. The defaults have not changed but if you were using a custom image, you will have to override the registry of said custom container image before you upgrade. - -For instance, the prometheus-config-reloader used to be configured as follow: - -```yaml - image: - repository: quay.io/prometheus-operator/prometheus-config-reloader - tag: v0.60.1 - sha: "" -``` - -But it now moved to: - -```yaml - image: - registry: quay.io - repository: prometheus-operator/prometheus-config-reloader - tag: v0.60.1 - sha: "" -``` - -### From 40.x to 41.x - -This version upgrades Prometheus-Operator to v0.60.1, Prometheus to v2.39.1 and Thanos to v0.28.1. -This version also upgrades the Helm charts of kube-state-metrics to 4.20.2, prometheus-node-exporter to 4.3.0 and Grafana to 6.40.4. - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.60.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -This version splits kubeScheduler recording and altering rules in separate config values. -Instead of `defaultRules.rules.kubeScheduler` the 2 new variables `defaultRules.rules.kubeSchedulerAlerting` and `defaultRules.rules.kubeSchedulerRecording` are used. - -### From 39.x to 40.x - -This version upgrades Prometheus-Operator to v0.59.1, Prometheus to v2.38.0, kube-state-metrics to v2.6.0 and Thanos to v0.28.0. -This version also upgrades the Helm charts of kube-state-metrics to 4.18.0 and prometheus-node-exporter to 4.2.0. - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.59.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -Starting from prometheus-node-exporter version 4.0.0, the `node exporter` chart is using the [Kubernetes recommended labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/). Therefore you have to delete the daemonset before you upgrade. - -```console -kubectl delete daemonset -l app=prometheus-node-exporter -helm upgrade -i kube-prometheus-stack prometheus-community/kube-prometheus-stack -``` - -If you use your own custom [ServiceMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitor) or [PodMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#podmonitor), please ensure to upgrade their `selector` fields accordingly to the new labels. - -### From 38.x to 39.x - -This upgraded prometheus-operator to v0.58.0 and prometheus to v2.37.0 - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.58.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 37.x to 38.x - -Reverted one of the default metrics relabelings for cAdvisor added in 36.x, due to it breaking container_network_* and various other statistics. If you do not want this change, you will need to override the `kubelet.cAdvisorMetricRelabelings`. - -### From 36.x to 37.x - -This includes some default metric relabelings for cAdvisor and apiserver metrics to reduce cardinality. If you do not want these defaults, you will need to override the `kubeApiServer.metricRelabelings` and or `kubelet.cAdvisorMetricRelabelings`. - -### From 35.x to 36.x - -This upgraded prometheus-operator to v0.57.0 and prometheus to v2.36.1 - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 34.x to 35.x - -This upgraded prometheus-operator to v0.56.0 and prometheus to v2.35.0 - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.56.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 33.x to 34.x - -This upgrades to prometheus-operator to v0.55.0 and prometheus to v2.33.5. - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.55.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 32.x to 33.x - -This upgrades the prometheus-node-exporter Chart to v3.0.0. Please review the changes to this subchart if you make customizations to hostMountPropagation. - -### From 31.x to 32.x - -This upgrades to prometheus-operator to v0.54.0 and prometheus to v2.33.1. It also changes the default for `grafana.serviceMonitor.enabled` to `true. - -Run these commands to update the CRDs before applying the upgrade. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.54.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 30.x to 31.x - -This version removes the built-in grafana ServiceMonitor and instead relies on the ServiceMonitor of the sub-chart. -`grafana.serviceMonitor.enabled` must be set instead of `grafana.serviceMonitor.selfMonitor` and the old ServiceMonitor may -need to be manually cleaned up after deploying the new release. - -### From 29.x to 30.x - -This version updates kube-state-metrics to 4.3.0 and uses the new option `kube-state-metrics.releaseLabel=true` which adds the "release" label to kube-state-metrics labels, making scraping of the metrics by kube-prometheus-stack work out of the box again, independent of the used kube-prometheus-stack release name. If you already set the "release" label via `kube-state-metrics.customLabels` you might have to remove that and use it via the new option. - -### From 28.x to 29.x - -This version makes scraping port for kube-controller-manager and kube-scheduler dynamic to reflect changes to default serving ports -for those components in Kubernetes versions v1.22 and v1.23 respectively. - -If you deploy on clusters using version v1.22+, kube-controller-manager will be scraped over HTTPS on port 10257. - -If you deploy on clusters running version v1.23+, kube-scheduler will be scraped over HTTPS on port 10259. - -### From 27.x to 28.x - -This version disables PodSecurityPolicies by default because they are deprecated in Kubernetes 1.21 and will be removed in Kubernetes 1.25. - -If you are using PodSecurityPolicies you can enable the previous behaviour by setting `kube-state-metrics.podSecurityPolicy.enabled`, `prometheus-node-exporter.rbac.pspEnabled`, `grafana.rbac.pspEnabled` and `global.rbac.pspEnabled` to `true`. - -### From 26.x to 27.x - -This version splits prometheus-node-exporter chart recording and altering rules in separate config values. -Instead of `defaultRules.rules.node` the 2 new variables `defaultRules.rules.nodeExporterAlerting` and `defaultRules.rules.nodeExporterRecording` are used. - -Also the following defaultRules.rules has been removed as they had no effect: `kubeApiserverError`, `kubePrometheusNodeAlerting`, `kubernetesAbsent`, `time`. - -The ability to set a rubookUrl via `defaultRules.rules.rubookUrl` was reintroduced. - -### From 25.x to 26.x - -This version enables the prometheus-node-exporter subchart servicemonitor by default again, by setting `prometheus-node-exporter.prometheus.monitor.enabled` to `true`. - -### From 24.x to 25.x - -This version upgrade to prometheus-operator v0.53.1. It removes support for setting a runbookUrl, since the upstream format for runbooks changed. - -```console -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.53.1/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 23.x to 24.x - -The custom `ServiceMonitor` for the _kube-state-metrics_ & _prometheus-node-exporter_ charts have been removed in favour of the built-in sub-chart `ServiceMonitor`; for both sub-charts this means that `ServiceMonitor` customisations happen via the values passed to the chart. If you haven't directly customised this behaviour then there are no changes required to upgrade, but if you have please read the following. - -For _kube-state-metrics_ the `ServiceMonitor` customisation is now set via `kube-state-metrics.prometheus.monitor` and the `kubeStateMetrics.serviceMonitor.selfMonitor.enabled` value has moved to `kube-state-metrics.selfMonitor.enabled`. - -For _prometheus-node-exporter_ the `ServiceMonitor` customisation is now set via `prometheus-node-exporter.prometheus.monitor` and the `nodeExporter.jobLabel` values has moved to `prometheus-node-exporter.prometheus.monitor.jobLabel`. - -### From 22.x to 23.x - -Port names have been renamed for Istio's -[explicit protocol selection](https://istio.io/latest/docs/ops/configuration/traffic-management/protocol-selection/#explicit-protocol-selection). - -| | old value | new value | -|-|-----------|-----------| -| `alertmanager.alertmanagerSpec.portName` | `web` | `http-web` | -| `grafana.service.portName` | `service` | `http-web` | -| `prometheus-node-exporter.service.portName` | `metrics` (hardcoded) | `http-metrics` | -| `prometheus.prometheusSpec.portName` | `web` | `http-web` | - -### From 21.x to 22.x - -Due to the upgrade of the `kube-state-metrics` chart, removal of its deployment/stateful needs to done manually prior to upgrading: - -```console -kubectl delete deployments.apps -l app.kubernetes.io/instance=prometheus-operator,app.kubernetes.io/name=kube-state-metrics --cascade=orphan -``` - -or if you use autosharding: - -```console -kubectl delete statefulsets.apps -l app.kubernetes.io/instance=prometheus-operator,app.kubernetes.io/name=kube-state-metrics --cascade=orphan -``` - -### From 20.x to 21.x - -The config reloader values have been refactored. All the values have been moved to the key `prometheusConfigReloader` and the limits and requests can now be set separately. - -### From 19.x to 20.x - -Version 20 upgrades prometheus-operator from 0.50.x to 0.52.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.52.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.52.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 18.x to 19.x - -`kubeStateMetrics.serviceMonitor.namespaceOverride` was removed. -Please use `kube-state-metrics.namespaceOverride` instead. - -### From 17.x to 18.x - -Version 18 upgrades prometheus-operator from 0.49.x to 0.50.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.50.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.50.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 16.x to 17.x - -Version 17 upgrades prometheus-operator from 0.48.x to 0.49.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.49.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.49.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 15.x to 16.x - -Version 16 upgrades kube-state-metrics to v2.0.0. This includes changed command-line arguments and removed metrics, see this [blog post](https://kubernetes.io/blog/2021/04/13/kube-state-metrics-v-2-0/). This version also removes Grafana dashboards that supported Kubernetes 1.14 or earlier. - -### From 14.x to 15.x - -Version 15 upgrades prometheus-operator from 0.46.x to 0.47.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.47.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.47.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### 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 - -Version 12 upgrades prometheus-operator from 0.43.x to 0.44.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/release-0.44/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -``` - -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/prometheus-community/helm-charts/tree/main/charts/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` | - -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 repository](https://github.com/prometheus-operator/kube-prometheus/blob/main/docs/customizations/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/main/Documentation/user-guides/getting-started.md#include-servicemonitors) -- [PodMonitors](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/getting-started.md#include-podmonitors) -- [Running Exporters](https://github.com/prometheus-operator/prometheus-operator/blob/main/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.kubernetes.io/name: 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/app-README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/app-README.md deleted file mode 100644 index 3920854..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/app-README.md +++ /dev/null @@ -1,46 +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/grafana/helm-charts/tree/main/charts/grafana) - Grafana allows a user to create / view dashboards based on the cluster metrics collected by Prometheus. -- [node-exporter](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-node-exporter) / [kube-state-metrics](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-state-metrics) / [rancher-pushprox](https://github.com/rancher/charts/tree/dev-v2.7/packages/rancher-monitoring/rancher-pushprox/charts) - These charts monitor various Kubernetes components across different Kubernetes cluster types. -- [Prometheus Adapter](https://github.com/prometheus-community/helm-charts/tree/main/charts/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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. -​ -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## Upgrading from 100.0.0+up16.6.0 to 100.1.0+up19.0.3 - -### Noticeable changes: -Grafana: -- `sidecar.dashboards.searchNamespace`, `sidecar.datasources.searchNamespace` and `sidecar.notifiers.searchNamespace` support a list of namespaces now. - -Kube-state-metrics -- the type of `collectors` is changed from Dictionary to List. -- `kubeStateMetrics.serviceMonitor.namespaceOverride` was replaced by `kube-state-metrics.namespaceOverride`. - -### Known issues: -- Occasionally, the upgrade fails with errors related to the webhook `prometheusrulemutate.monitoring.coreos.com`. This is a known issue in the upstream, and the workaround is to trigger the upgrade one more time. [32416](https://github.com/rancher/rancher/issues/32416#issuecomment-828881726) diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/.helmignore deleted file mode 100644 index 8cade13..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/Chart.yaml deleted file mode 100644 index ff6bcb2..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/Chart.yaml +++ /dev/null @@ -1,39 +0,0 @@ -annotations: - artifacthub.io/license: Apache-2.0 - artifacthub.io/links: | - - name: Chart Source - url: https://github.com/grafana/helm-charts - - name: Upstream Project - url: https://github.com/grafana/grafana - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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: 10.4.1 -description: The leading tool for querying and visualizing time series and metrics. -home: https://grafana.com -icon: https://artifacthub.io/image/b4fed1a7-6c8f-4945-b99d-096efa3e4116 -keywords: -- monitoring -- metric -kubeVersion: '>=1.26.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 -- https://github.com/grafana/helm-charts -type: application -version: 7.3.11 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/README.md deleted file mode 100644 index 0ff07f2..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/README.md +++ /dev/null @@ -1,770 +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. - -### To 7.0.0 - -For consistency with other Helm charts, the `global.image.registry` parameter was renamed -to `global.imageRegistry`. If you were not previously setting `global.image.registry`, no action -is required on upgrade. If you were previously setting `global.image.registry`, you will -need to instead set `global.imageRegistry`. - -## Configuration - -| Parameter | Description | Default | -|-------------------------------------------|-----------------------------------------------|---------------------------------------------------------| -| `replicas` | Number of nodes | `1` | -| `podDisruptionBudget.minAvailable` | Pod disruption minimum available | `nil` | -| `podDisruptionBudget.maxUnavailable` | Pod disruption maximum unavailable | `nil` | -| `podDisruptionBudget.apiVersion` | Pod disruption apiVersion | `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.registry` | Image registry | `docker.io` | -| `image.repository` | Image repository | `grafana/grafana` | -| `image.tag` | Overrides the Grafana image tag whose default is the chart appVersion (`Must be >= 5.0.0`) | `` | -| `image.sha` | Image sha (optional) | `` | -| `image.pullPolicy` | Image pull policy | `IfNotPresent` | -| `image.pullSecrets` | Image pull secrets (can be templated) | `[]` | -| `service.enabled` | Enable grafana service | `true` | -| `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.appProtocol` | Adds the appProtocol field to the service | `` | -| `service.targetPort` | Internal service is port | `3000` | -| `service.nodePort` | Kubernetes service nodePort | `nil` | -| `service.annotations` | Service annotations (can be templated) | `{}` | -| `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 | `[]` | -| `service.externalTrafficPolicy` | change the default externalTrafficPolicy | `nil` | -| `headlessService` | Create a headless service | `false` | -| `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-load-balancer-controller/v2.6/guide/ingress/annotations/#actions). Requires `ingress.hosts` to have one or more host entries. | `[]` | -| `ingress.tls` | Ingress TLS configuration | `[]` | -| `ingress.ingressClassName` | Ingress Class Name. MAY be required for Kubernetes versions >= 1.18 | `""` | -| `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 (can be templated) | `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.extraPvcLabels` | Extra labels to apply to a PVC. | `{}` | -| `persistence.subPath` | Mount a sub dir of the persistent volume (can be templated) | `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.registry` | init-chown-data container image registry | `docker.io` | -| `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. Can be templated | `{}` | -| `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 | `""` | -| `envFromSecrets` | List of Kubernetes secrets (must be manually created in the same namespace) containing values to be added to the environment. Can be templated | `[]` | -| `envFromConfigMaps` | List of Kubernetes ConfigMaps (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. (passed through [tpl](https://helm.sh/docs/howto/charts_tips_and_tricks/#using-the-tpl-function)) | `{}` | -| `enableServiceLinks` | Inject Kubernetes services as environment variables. | `true` | -| `extraSecretMounts` | Additional grafana server secret mounts | `[]` | -| `extraVolumeMounts` | Additional grafana server volume mounts | `[]` | -| `extraVolumes` | Additional Grafana server volumes | `[]` | -| `automountServiceAccountToken` | Mounted the service account token on the grafana pod. Mandatory, if sidecars are enabled | `true` | -| `createConfigmap` | Enable creating the grafana configmap | `true` | -| `extraConfigmapMounts` | Additional grafana server configMap volume mounts (values are templated) | `[]` | -| `extraEmptyDirMounts` | Additional grafana server emptyDir volume mounts | `[]` | -| `plugins` | Plugins to be loaded along with Grafana | `[]` | -| `datasources` | Configure grafana datasources (passed through tpl) | `{}` | -| `alerting` | Configure grafana alerting (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 | `{}` | -| `global.imageRegistry` | Global image pull registry for all images. | `null` | -| `global.imagePullSecrets` | Global image pull secrets (can be templated). Allows either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style). | `[]` | -| `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` | -| `lifecycleHooks` | Lifecycle hooks for podStart and preStop [Example](https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/#define-poststart-and-prestop-handlers) | `{}` | -| `sidecar.image.registry` | Sidecar image registry | `quay.io` | -| `sidecar.image.repository` | Sidecar image repository | `kiwigrid/k8s-sidecar` | -| `sidecar.image.tag` | Sidecar image tag | `1.26.0` | -| `sidecar.image.sha` | Sidecar image sha (optional) | `""` | -| `sidecar.imagePullPolicy` | Sidecar image pull policy | `IfNotPresent` | -| `sidecar.resources` | Sidecar resources | `{}` | -| `sidecar.securityContext` | Sidecar securityContext | `{}` | -| `sidecar.enableUniqueFilenames` | Sets the kiwigrid/k8s-sidecar UNIQUE_FILENAMES environment variable. If set to `true` the sidecar will create unique filenames where duplicate data keys exist between ConfigMaps and/or Secrets within the same or multiple Namespaces. | `false` | -| `sidecar.alerts.enabled` | Enables the cluster wide search for alerts and adds/updates/deletes them in grafana |`false` | -| `sidecar.alerts.label` | Label that config maps with alerts should have to be added | `grafana_alert` | -| `sidecar.alerts.labelValue` | Label value that config maps with alerts should have to be added | `""` | -| `sidecar.alerts.searchNamespace` | Namespaces list. If specified, the sidecar will search for alerts config-maps inside these namespaces. 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.alerts.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.alerts.resource` | Should the sidecar looks into secrets, configmaps or both. | `both` | -| `sidecar.alerts.reloadURL` | Full url of datasource configuration reload API endpoint, to invoke after a config-map change | `"http://localhost:3000/api/admin/provisioning/alerting/reload"` | -| `sidecar.alerts.skipReload` | Enabling this omits defining the REQ_URL and REQ_METHOD environment variables | `false` | -| `sidecar.alerts.initAlerts` | Set to true to deploy the alerts sidecar as an initContainer. This is needed if skipReload is true, to load any alerts defined at startup time. | `false` | -| `sidecar.alerts.extraMounts` | Additional alerts sidecar volume mounts. | `[]` | -| `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 | `""` | -| `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` | Namespaces list. If specified, the sidecar will search for dashboards config-maps inside these namespaces. 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.dashboards.script` | Absolute path to shell script to execute after a configmap got reloaded. | `nil` | -| `sidecar.dashboards.reloadURL` | Full url of dashboards configuration reload API endpoint, to invoke after a config-map change | `"http://localhost:3000/api/admin/provisioning/dashboards/reload"` | -| `sidecar.dashboards.skipReload` | Enabling this omits defining the REQ_USERNAME, REQ_PASSWORD, REQ_URL and REQ_METHOD environment variables | `false` | -| `sidecar.dashboards.resource` | Should the sidecar looks into secrets, configmaps or both. | `both` | -| `sidecar.dashboards.extraMounts` | Additional dashboard sidecar volume mounts. | `[]` | -| `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 | `""` | -| `sidecar.datasources.searchNamespace` | Namespaces list. If specified, the sidecar will search for datasources config-maps inside these namespaces. 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.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.datasources.resource` | Should the sidecar looks into secrets, configmaps or both. | `both` | -| `sidecar.datasources.reloadURL` | Full url of datasource configuration reload API endpoint, to invoke after a config-map change | `"http://localhost:3000/api/admin/provisioning/datasources/reload"` | -| `sidecar.datasources.skipReload` | Enabling this omits defining the REQ_URL and REQ_METHOD environment variables | `false` | -| `sidecar.datasources.initDatasources` | Set to true to deploy the datasource sidecar as an initContainer in addition to a container. This is needed if skipReload is true, to load any datasources defined at startup time. | `false` | -| `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.labelValue` | Label value that config maps with notifiers should have to be added | `""` | -| `sidecar.notifiers.searchNamespace` | Namespaces list. If specified, the sidecar will search for notifiers config-maps (or secrets) inside these namespaces. 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.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.notifiers.resource` | Should the sidecar looks into secrets, configmaps or both. | `both` | -| `sidecar.notifiers.reloadURL` | Full url of notifier configuration reload API endpoint, to invoke after a config-map change | `"http://localhost:3000/api/admin/provisioning/notifications/reload"` | -| `sidecar.notifiers.skipReload` | Enabling this omits defining the REQ_URL and REQ_METHOD environment variables | `false` | -| `sidecar.notifiers.initNotifiers` | Set to true to deploy the notifier sidecar as an initContainer in addition to a container. This is needed if skipReload is true, to load any notifiers defined at startup time. | `false` | -| `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 (can be templated). | `""` | -| `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.automountServiceAccountToken` | Automount the service account token on all pods where is service account is used | `false` | -| `serviceAccount.annotations` | ServiceAccount annotations | | -| `serviceAccount.create` | Create service account | `true` | -| `serviceAccount.labels` | ServiceAccount labels | `{}` | -| `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) | `false` | -| `rbac.pspUseAppArmor` | Enforce AppArmor in created PodSecurityPolicy (requires `rbac.pspEnabled`) | `false` | -| `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` | -| `args` | Define additional args if command is used | `nil` | -| `testFramework.enabled` | Whether to create test-related resources | `true` | -| `testFramework.image.registry` | `test-framework` image registry. | `docker.io` | -| `testFramework.image.repository` | `test-framework` image repository. | `bats/bats` | -| `testFramework.image.tag` | `test-framework` image tag. | `v1.4.1` | -| `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.registry` | Curl docker image registry | `docker.io` | -| `downloadDashboardsImage.repository` | Curl docker image repository | `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` | RelabelConfigs to apply to samples before scraping. | `[]` | -| `serviceMonitor.metricRelabelings` | 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.registry` | image-renderer Image registry | `docker.io` | -| `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.envValueFrom` | Environment variables for image-renderer 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. Can be templated | `{}` | -| `imageRenderer.serviceAccountName` | image-renderer deployment serviceAccountName | `""` | -| `imageRenderer.securityContext` | image-renderer deployment securityContext | `{}` | -| `imageRenderer.podAnnotations ` | image-renderer image-renderer pod annotation | `{}` | -| `imageRenderer.hostAliases` | image-renderer deployment Host Aliases | `[]` | -| `imageRenderer.priorityClassName` | image-renderer deployment priority class | `''` | -| `imageRenderer.service.enabled` | Enable the image-renderer service | `true` | -| `imageRenderer.service.portName` | image-renderer service port name | `http` | -| `imageRenderer.service.port` | image-renderer port used by deployment | `8081` | -| `imageRenderer.service.targetPort` | image-renderer service port used by service | `8081` | -| `imageRenderer.appProtocol` | Adds the appProtocol field to the service | `` | -| `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 pods | `{}` | -| `imageRenderer.nodeSelector` | Node labels for pod assignment | `{}` | -| `imageRenderer.tolerations` | Toleration labels for pod assignment | `[]` | -| `imageRenderer.affinity` | Affinity settings for pod assignment | `{}` | -| `networkPolicy.enabled` | Enable creation of NetworkPolicy resources. | `false` | -| `networkPolicy.allowExternal` | Don't require client label for connections | `true` | -| `networkPolicy.explicitNamespacesSelector` | A Kubernetes LabelSelector to explicitly select namespaces from which traffic could be allowed | `{}` | -| `networkPolicy.ingress` | Enable the creation of an ingress network policy | `true` | -| `networkPolicy.egress.enabled` | Enable the creation of an egress network policy | `false` | -| `networkPolicy.egress.ports` | An array of ports to allow for the egress | `[]` | -| `enableKubeBackwardCompatibility` | Enable backward compatibility of kubernetes where pod's defintion version below 1.13 doesn't have the enableServiceLinks option | `false` | - -### 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 and extraVolumes - -Configure additional volumes with `extraVolumes` and volume mounts with `extraVolumeMounts`. - -Example for `extraVolumeMounts` and corresponding `extraVolumes`: - -```yaml -extraVolumeMounts: - - name: plugins - mountPath: /var/lib/grafana/plugins - subPath: configs/grafana/plugins - readOnly: false - - name: dashboards - mountPath: /var/lib/grafana/dashboards - hostPath: /usr/shared/grafana/dashboards - readOnly: false - -extraVolumes: - - name: plugins - existingClaim: existing-grafana-claim - - name: dashboards - hostPath: /usr/shared/grafana/dashboards -``` - -Volumes default to `emptyDir`. Set to `persistentVolumeClaim`, -`hostPath`, `csi`, or `configMap` for other types. For a -`persistentVolumeClaim`, specify an existing claim name with -`existingClaim`. - -## 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 - loki-dashboard-quick-search: - gnetId: 12019 - revision: 2 - datasource: - - name: DS_PROMETHEUS - value: Prometheus - - name: DS_LOKI - value: Loki - 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. - -Should you aim for reloading datasources in Grafana each time the config is changed, set `sidecar.datasources.skipReload: false` and adjust `sidecar.datasources.reloadURL` to `http://..svc.cluster.local/api/admin/provisioning/datasources/reload`. - -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 postgres datasource as a kubernetes secret: -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: grafana-datasources - labels: - grafana_datasource: 'true' # default value for: sidecar.datasources.label -stringData: - pg-db.yaml: |- - apiVersion: 1 - datasources: - - name: My pg db datasource - type: postgres - url: my-postgresql-db:5432 - user: db-readonly-user - secureJsonData: - password: 'SUperSEcretPa$$word' - jsonData: - database: my_datase - sslmode: 'disable' # disable/require/verify-ca/verify-full - maxOpenConns: 0 # Grafana v5.4+ - maxIdleConns: 2 # Grafana v5.4+ - connMaxLifetime: 14400 # Grafana v5.4+ - postgresVersion: 1000 # 903=9.3, 904=9.4, 905=9.5, 906=9.6, 1000=10 - timescaledb: false - # allow users to edit datasources from the UI. - editable: false -``` - -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 -``` - -## Sidecar for alerting resources - -If the parameter `sidecar.alerts.enabled` is set, a sidecar container is deployed in the grafana -pod. This container watches all configmaps (or secrets) in the cluster (namespace defined by `sidecar.alerts.searchNamespace`) and filters out the ones with -a label as defined in `sidecar.alerts.label` (default is `grafana_alert`). The files defined in those configmaps are written -to a folder and accessed by grafana. Changes to the configmaps are monitored and the imported alerting resources are updated, however, deletions are a little more complicated (see below). - -This sidecar can be used to provision alert rules, contact points, notification policies, notification templates and mute timings as shown in [Grafana Documentation](https://grafana.com/docs/grafana/next/alerting/set-up/provision-alerting-resources/file-provisioning/). - -To fetch the alert config which will be provisioned, use the alert provisioning API ([Grafana Documentation](https://grafana.com/docs/grafana/next/developers/http_api/alerting_provisioning/)). -You can use either JSON or YAML format. - -Example config for an alert rule: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: sample-grafana-alert - labels: - grafana_alert: "1" -data: - k8s-alert.yml: |- - apiVersion: 1 - groups: - - orgId: 1 - name: k8s-alert - [...] -``` - -To delete provisioned alert rules is a two step process, you need to delete the configmap which defined the alert rule -and then create a configuration which deletes the alert rule. - -Example deletion configuration: -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: delete-sample-grafana-alert - namespace: monitoring - labels: - grafana_alert: "1" -data: - delete-k8s-alert.yml: |- - apiVersion: 1 - deleteRules: - - orgId: 1 - uid: 16624780-6564-45dc-825c-8bded4ad92d3 -``` - -## Statically provision alerting resources -If you don't need to change alerting resources (alert rules, contact points, notification policies and notification templates) regularly you could use the `alerting` config option instead of the sidecar option above. -This will grab the alerting config and apply it statically at build time for the helm file. - -There are two methods to statically provision alerting configuration in Grafana. Below are some examples and explanations as to how to use each method: - -```yaml -alerting: - team1-alert-rules.yaml: - file: alerting/team1/rules.yaml - team2-alert-rules.yaml: - file: alerting/team2/rules.yaml - team3-alert-rules.yaml: - file: alerting/team3/rules.yaml - notification-policies.yaml: - file: alerting/shared/notification-policies.yaml - notification-templates.yaml: - file: alerting/shared/notification-templates.yaml - contactpoints.yaml: - apiVersion: 1 - contactPoints: - - orgId: 1 - name: Slack channel - receivers: - - uid: default-receiver - type: slack - settings: - # Webhook URL to be filled in - url: "" - # We need to escape double curly braces for the tpl function. - text: '{{ `{{ template "default.message" . }}` }}' - title: '{{ `{{ template "default.title" . }}` }}' -``` - -The two possibilities for static alerting resource provisioning are: - -* Inlining the file contents as shown for contact points in the above example. -* Importing a file using a relative path starting from the chart root directory as shown for the alert rules in the above example. - -### Important notes on file provisioning - -* The format of the files is defined in the [Grafana documentation](https://grafana.com/docs/grafana/next/alerting/set-up/provision-alerting-resources/file-provisioning/) on file provisioning. -* The chart supports importing YAML and JSON files. -* The filename must be unique, otherwise one volume mount will overwrite the other. -* In case of inlining, double curly braces that arise from the Grafana configuration format and are not intended as templates for the chart must be escaped. -* The number of total files under `alerting:` is not limited. Each file will end up as a volume mount in the corresponding provisioning folder of the deployed Grafana instance. -* The file size for each import is limited by what the function `.Files.Get` can handle, which suffices for most cases. - -## 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 [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/README.md#run-in-docker) - -```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 - -### High Availability for unified alerting - -If you want to run Grafana in a high availability cluster you need to enable -the headless service by setting `headlessService: true` in your `values.yaml` -file. - -As next step you have to setup the `grafana.ini` in your `values.yaml` in a way -that it will make use of the headless service to obtain all the IPs of the -cluster. You should replace ``{{ Name }}`` with the name of your helm deployment. - -```yaml -grafana.ini: - ... - unified_alerting: - enabled: true - ha_peers: {{ Name }}-headless:9094 - ha_listen_address: ${POD_IP}:9094 - ha_advertise_address: ${POD_IP}:9094 - - alerting: - enabled: false -``` diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/dashboards/custom-dashboard.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/dashboards/custom-dashboard.json deleted file mode 100644 index 9e26dfe..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/dashboards/custom-dashboard.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/NOTES.txt b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/NOTES.txt deleted file mode 100644 index d86419f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/NOTES.txt +++ /dev/null @@ -1,55 +0,0 @@ -1. Get your '{{ .Values.adminUser }}' user password by running: - - kubectl get secret --namespace {{ include "grafana.namespace" . }} {{ .Values.admin.existingSecret | default (include "grafana.fullname" .) }} -o jsonpath="{.data.{{ .Values.admin.passwordKey | default "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: - - {{ include "grafana.fullname" . }}.{{ include "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 {{ include "grafana.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "grafana.fullname" . }}) - export NODE_IP=$(kubectl get nodes --namespace {{ include "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 {{ include "grafana.namespace" . }} -w {{ include "grafana.fullname" . }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ include "grafana.namespace" . }} {{ include "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 {{ include "grafana.namespace" . }} -l "app.kubernetes.io/name={{ include "grafana.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - kubectl --namespace {{ include "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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/_config.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/_config.tpl deleted file mode 100644 index 19df19c..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/_config.tpl +++ /dev/null @@ -1,171 +0,0 @@ -{{/* - Generate config map data - */}} -{{- define "grafana.configData" -}} -{{ include "grafana.assertNoLeakedSecrets" . }} -{{- $files := .Files }} -{{- $root := . -}} -{{- with .Values.plugins }} -plugins: {{ join "," . }} -{{- end }} -grafana.ini: | -{{- range $elem, $elemVal := index .Values "grafana.ini" }} - {{- if not (kindIs "map" $elemVal) }} - {{- if kindIs "invalid" $elemVal }} - {{ $elem }} = - {{- else if kindIs "string" $elemVal }} - {{ $elem }} = {{ tpl $elemVal $ }} - {{- else }} - {{ $elem }} = {{ $elemVal }} - {{- end }} - {{- end }} -{{- end }} -{{- range $key, $value := index .Values "grafana.ini" }} - {{- if kindIs "map" $value }} - [{{ $key }}] - {{- range $elem, $elemVal := $value }} - {{- if kindIs "invalid" $elemVal }} - {{ $elem }} = - {{- else if kindIs "string" $elemVal }} - {{ $elem }} = {{ tpl $elemVal $ }} - {{- else }} - {{ $elem }} = {{ $elemVal }} - {{- end }} - {{- end }} - {{- end }} -{{- end }} - -{{- range $key, $value := .Values.datasources }} -{{- if not (hasKey $value "secret") }} -{{ $key }}: | - {{- tpl (toYaml $value | nindent 2) $root }} -{{- end }} -{{- end }} - -{{- range $key, $value := .Values.notifiers }} -{{- if not (hasKey $value "secret") }} -{{ $key }}: | - {{- toYaml $value | nindent 2 }} -{{- end }} -{{- end }} - -{{- range $key, $value := .Values.alerting }} -{{- if (hasKey $value "file") }} -{{ $key }}: -{{- toYaml ( $files.Get $value.file ) | nindent 2 }} -{{- else if (or (hasKey $value "secret") (hasKey $value "secretFile"))}} -{{/* will be stored inside secret generated by "configSecret.yaml"*/}} -{{- else }} -{{ $key }}: | - {{- tpl (toYaml $value | nindent 2) $root }} -{{- end }} -{{- end }} - -{{- range $key, $value := .Values.dashboardProviders }} -{{ $key }}: | - {{- toYaml $value | nindent 2 }} -{{- 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 }} -{{ $dashboardProviders := .Values.dashboardProviders }} -{{- 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 }} - {{- if not $value.acceptHeader }} - -H "Accept: application/json" \ - {{- else }} - -H "Accept: {{ $value.acceptHeader }}" \ - {{- end }} - {{- if $value.token }} - -H "Authorization: token {{ $value.token }}" \ - {{- end }} - {{- if $value.bearerToken }} - -H "Authorization: Bearer {{ $value.bearerToken }}" \ - {{- end }} - {{- if $value.basic }} - -H "Authorization: Basic {{ $value.basic }}" \ - {{- end }} - {{- if $value.gitlabToken }} - -H "PRIVATE-TOKEN: {{ $value.gitlabToken }}" \ - {{- end }} - -H "Content-Type: application/json;charset=UTF-8" \ - {{- end }} - {{- $dpPath := "" -}} - {{- range $kd := (index $dashboardProviders "dashboardproviders.yaml").providers }} - {{- if eq $kd.name $provider }} - {{- $dpPath = $kd.options.path }} - {{- end }} - {{- 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 }} - {{- if kindIs "string" $value.datasource }} - | sed '/-- .* --/! s/"datasource":.*,/"datasource": "{{ $value.datasource }}",/g' \ - {{- end }} - {{- if kindIs "slice" $value.datasource }} - {{- range $value.datasource }} - | sed '/-- .* --/! s/${{"{"}}{{ .name }}}/{{ .value }}/g' \ - {{- end }} - {{- end }} - {{- end }} - {{- if $value.b64content }} - | base64 -d \ - {{- end }} - > "{{- if $dpPath -}}{{ $dpPath }}{{- else -}}/var/lib/grafana/dashboards/{{ $provider }}{{- end -}}/{{ $key }}.json" - {{ end }} - {{- end }} -{{- end }} -{{- end }} -{{- end -}} - -{{/* - Generate dashboard json config map data - */}} -{{- define "grafana.configDashboardProviderData" -}} -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 -}} - -{{- define "grafana.secretsData" -}} -{{- if and (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) (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: {{ include "grafana.password" . }} -{{- end }} -{{- end }} -{{- if not .Values.ldap.existingSecret }} -ldap-toml: {{ tpl .Values.ldap.config $ | b64enc | quote }} -{{- end }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/_helpers.tpl deleted file mode 100644 index 68d2d81..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/_helpers.tpl +++ /dev/null @@ -1,305 +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: {{ mustRegexReplaceAllLiteral "@sha.*" .Values.image.tag "" | default .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- with .Values.extraLabels }} -{{ toYaml . }} -{{- 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: {{ mustRegexReplaceAllLiteral "@sha.*" .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 }} - -{{/* -Looks if there's an existing secret and reuse its password. If not it generates -new password and use it. -*/}} -{{- define "grafana.password" -}} -{{- $secret := (lookup "v1" "Secret" (include "grafana.namespace" .) (include "grafana.fullname" .) ) }} -{{- if $secret }} -{{- index $secret "data" "admin-password" }} -{{- else }} -{{- (randAlphaNum 40) | b64enc | quote }} -{{- end }} -{{- end }} - -{{/* -Return the appropriate apiVersion for rbac. -*/}} -{{- define "grafana.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 }} - -{{/* -Return the appropriate apiVersion for ingress. -*/}} -{{- define "grafana.ingress.apiVersion" -}} -{{- if and ($.Capabilities.APIVersions.Has "networking.k8s.io/v1") (semverCompare ">= 1.19-0" .Capabilities.KubeVersion.Version) }} -{{- print "networking.k8s.io/v1" }} -{{- else if $.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }} -{{- print "networking.k8s.io/v1beta1" }} -{{- else }} -{{- print "extensions/v1beta1" }} -{{- end }} -{{- end }} - -{{/* -Return the appropriate apiVersion for Horizontal Pod Autoscaler. -*/}} -{{- define "grafana.hpa.apiVersion" -}} -{{- if .Capabilities.APIVersions.Has "autoscaling/v2" }} -{{- print "autoscaling/v2" }} -{{- else }} -{{- print "autoscaling/v2beta2" }} -{{- end }} -{{- end }} - -{{/* -Return the appropriate apiVersion for podDisruptionBudget. -*/}} -{{- define "grafana.podDisruptionBudget.apiVersion" -}} -{{- if $.Values.podDisruptionBudget.apiVersion }} -{{- print $.Values.podDisruptionBudget.apiVersion }} -{{- else if $.Capabilities.APIVersions.Has "policy/v1/PodDisruptionBudget" }} -{{- print "policy/v1" }} -{{- else }} -{{- print "policy/v1beta1" }} -{{- end }} -{{- end }} - -{{/* -Return if ingress is stable. -*/}} -{{- define "grafana.ingress.isStable" -}} -{{- eq (include "grafana.ingress.apiVersion" .) "networking.k8s.io/v1" }} -{{- end }} - -{{/* -Return if ingress supports ingressClassName. -*/}} -{{- define "grafana.ingress.supportsIngressClassName" -}} -{{- or (eq (include "grafana.ingress.isStable" .) "true") (and (eq (include "grafana.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" .Capabilities.KubeVersion.Version)) }} -{{- end }} - -{{/* -Return if ingress supports pathType. -*/}} -{{- define "grafana.ingress.supportsPathType" -}} -{{- or (eq (include "grafana.ingress.isStable" .) "true") (and (eq (include "grafana.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" .Capabilities.KubeVersion.Version)) }} -{{- end }} - -{{/* -Formats imagePullSecrets. Input is (dict "root" . "imagePullSecrets" .{specific imagePullSecrets}) -*/}} -{{- define "grafana.imagePullSecrets" -}} -{{- $root := .root }} -{{- range (concat .root.Values.global.imagePullSecrets .imagePullSecrets) }} -{{- if eq (typeOf .) "map[string]interface {}" }} -- {{ toYaml (dict "name" (tpl .name $root)) | trim }} -{{- else }} -- name: {{ tpl . $root }} -{{- end }} -{{- end }} -{{- end }} - - -{{/* - Checks whether or not the configSecret secret has to be created - */}} -{{- define "grafana.shouldCreateConfigSecret" -}} -{{- $secretFound := false -}} -{{- range $key, $value := .Values.datasources }} - {{- if hasKey $value "secret" }} - {{- $secretFound = true}} - {{- end }} -{{- end }} -{{- range $key, $value := .Values.notifiers }} - {{- if hasKey $value "secret" }} - {{- $secretFound = true}} - {{- end }} -{{- end }} -{{- range $key, $value := .Values.alerting }} - {{- if (or (hasKey $value "secret") (hasKey $value "secretFile")) }} - {{- $secretFound = true}} - {{- end }} -{{- end }} -{{- $secretFound}} -{{- end -}} - -{{/* - Checks whether the user is attempting to store secrets in plaintext - in the grafana.ini configmap -*/}} -{{/* grafana.assertNoLeakedSecrets checks for sensitive keys in values */}} -{{- define "grafana.assertNoLeakedSecrets" -}} - {{- $sensitiveKeysYaml := ` -sensitiveKeys: -- path: ["database", "password"] -- path: ["smtp", "password"] -- path: ["security", "secret_key"] -- path: ["security", "admin_password"] -- path: ["auth.basic", "password"] -- path: ["auth.ldap", "bind_password"] -- path: ["auth.google", "client_secret"] -- path: ["auth.github", "client_secret"] -- path: ["auth.gitlab", "client_secret"] -- path: ["auth.generic_oauth", "client_secret"] -- path: ["auth.okta", "client_secret"] -- path: ["auth.azuread", "client_secret"] -- path: ["auth.grafana_com", "client_secret"] -- path: ["auth.grafananet", "client_secret"] -- path: ["azure", "user_identity_client_secret"] -- path: ["unified_alerting", "ha_redis_password"] -- path: ["metrics", "basic_auth_password"] -- path: ["external_image_storage.s3", "secret_key"] -- path: ["external_image_storage.webdav", "password"] -- path: ["external_image_storage.azure_blob", "account_key"] -` | fromYaml -}} - {{- if $.Values.assertNoLeakedSecrets -}} - {{- $grafanaIni := index .Values "grafana.ini" -}} - {{- range $_, $secret := $sensitiveKeysYaml.sensitiveKeys -}} - {{- $currentMap := $grafanaIni -}} - {{- $shouldContinue := true -}} - {{- range $index, $elem := $secret.path -}} - {{- if and $shouldContinue (hasKey $currentMap $elem) -}} - {{- if eq (len $secret.path) (add1 $index) -}} - {{- if not (regexMatch "\\$(?:__(?:env|file|vault))?{[^}]+}" (index $currentMap $elem)) -}} - {{- fail (printf "Sensitive key '%s' should not be defined explicitly in values. Use variable expansion instead. You can disable this client-side validation by changing the value of assertNoLeakedSecrets." (join "." $secret.path)) -}} - {{- end -}} - {{- else -}} - {{- $currentMap = index $currentMap $elem -}} - {{- end -}} - {{- else -}} - {{- $shouldContinue = false -}} - {{- end -}} - {{- end -}} - {{- end -}} - {{- end -}} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/_pod.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/_pod.tpl deleted file mode 100644 index 2ebf7d5..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/_pod.tpl +++ /dev/null @@ -1,1296 +0,0 @@ -{{- define "grafana.pod" -}} -{{- $sts := list "sts" "StatefulSet" "statefulset" -}} -{{- $root := . -}} -{{- with .Values.schedulerName }} -schedulerName: "{{ . }}" -{{- end }} -serviceAccountName: {{ include "grafana.serviceAccountName" . }} -automountServiceAccountToken: {{ .Values.automountServiceAccountToken }} -{{- with .Values.securityContext }} -securityContext: - {{- toYaml . | nindent 2 }} -{{- end }} -{{- with .Values.hostAliases }} -hostAliases: - {{- toYaml . | nindent 2 }} -{{- end }} -{{- if .Values.dnsPolicy }} -dnsPolicy: {{ .Values.dnsPolicy }} -{{- end }} -{{- with .Values.dnsConfig }} -dnsConfig: - {{- toYaml . | nindent 2 }} -{{- end }} -{{- with .Values.priorityClassName }} -priorityClassName: {{ . }} -{{- end }} -{{- if ( or .Values.persistence.enabled .Values.dashboards .Values.extraInitContainers (and .Values.sidecar.alerts.enabled .Values.sidecar.alerts.initAlerts) (and .Values.sidecar.datasources.enabled .Values.sidecar.datasources.initDatasources) (and .Values.sidecar.notifiers.enabled .Values.sidecar.notifiers.initNotifiers)) }} -initContainers: -{{- end }} -{{- if ( and .Values.persistence.enabled .Values.initChownData.enabled ) }} - - name: init-chown-data - {{- $registry := include "system_default_registry" . | default .Values.initChownData.image.registry -}} - {{- if .Values.initChownData.image.sha }} - image: "{{ $registry }}{{ .Values.initChownData.image.repository }}:{{ .Values.initChownData.image.tag }}@sha256:{{ .Values.initChownData.image.sha }}" - {{- else }} - image: "{{ $registry }}{{ .Values.initChownData.image.repository }}:{{ .Values.initChownData.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.initChownData.image.pullPolicy }} - {{- with .Values.initChownData.securityContext }} - securityContext: - {{- toYaml . | nindent 6 }} - {{- end }} - command: - - chown - - -R - - {{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.runAsGroup }} - - /var/lib/grafana - {{- with .Values.initChownData.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} - volumeMounts: - - name: storage - mountPath: "/var/lib/grafana" - {{- with .Values.persistence.subPath }} - subPath: {{ tpl . $root }} - {{- end }} -{{- end }} -{{- if .Values.dashboards }} - - name: download-dashboards - {{- $registry := include "system_default_registry" . | default .Values.downloadDashboardsImage.registry -}} - {{- if .Values.downloadDashboardsImage.sha }} - image: "{{ $registry }}{{ .Values.downloadDashboardsImage.repository }}:{{ .Values.downloadDashboardsImage.tag }}@sha256:{{ .Values.downloadDashboardsImage.sha }}" - {{- else }} - image: "{{ $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 -x /etc/grafana/download_dashboards.sh" ] - {{- with .Values.downloadDashboards.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} - env: - {{- range $key, $value := .Values.downloadDashboards.env }} - - name: "{{ $key }}" - value: "{{ $value }}" - {{- end }} - {{- range $key, $value := .Values.downloadDashboards.envValueFrom }} - - name: {{ $key | quote }} - valueFrom: - {{- tpl (toYaml $value) $ | nindent 10 }} - {{- end }} - {{- with .Values.downloadDashboards.securityContext }} - securityContext: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.downloadDashboards.envFromSecret }} - envFrom: - - secretRef: - name: {{ tpl . $root }} - {{- end }} - volumeMounts: - - name: config - mountPath: "/etc/grafana/download_dashboards.sh" - subPath: download_dashboards.sh - - name: storage - mountPath: "/var/lib/grafana" - {{- with .Values.persistence.subPath }} - subPath: {{ tpl . $root }} - {{- end }} - {{- range .Values.extraSecretMounts }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - readOnly: {{ .readOnly }} - {{- end }} -{{- end }} -{{- if and .Values.sidecar.alerts.enabled .Values.sidecar.alerts.initAlerts }} - - name: {{ include "grafana.name" . }}-init-sc-alerts - {{- $registry := include "system_default_registry" . | default .Values.sidecar.image.registry -}} - {{- if .Values.sidecar.image.sha }} - image: "{{ $registry }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ $registry }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - env: - {{- range $key, $value := .Values.sidecar.alerts.env }} - - name: "{{ $key }}" - value: "{{ $value }}" - {{- end }} - {{- if .Values.sidecar.alerts.ignoreAlreadyProcessed }} - - name: IGNORE_ALREADY_PROCESSED - value: "true" - {{- end }} - - name: METHOD - value: "LIST" - - name: LABEL - value: "{{ .Values.sidecar.alerts.label }}" - {{- with .Values.sidecar.alerts.labelValue }} - - name: LABEL_VALUE - value: {{ quote . }} - {{- end }} - {{- if or .Values.sidecar.logLevel .Values.sidecar.alerts.logLevel }} - - name: LOG_LEVEL - value: {{ default .Values.sidecar.logLevel .Values.sidecar.alerts.logLevel }} - {{- end }} - - name: FOLDER - value: "/etc/grafana/provisioning/alerting" - - name: RESOURCE - value: {{ quote .Values.sidecar.alerts.resource }} - {{- with .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ . }}" - {{- end }} - {{- with .Values.sidecar.alerts.searchNamespace }} - - name: NAMESPACE - value: {{ . | join "," | quote }} - {{- end }} - {{- with .Values.sidecar.alerts.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: {{ quote . }} - {{- end }} - {{- with .Values.sidecar.alerts.script }} - - name: SCRIPT - value: {{ quote . }} - {{- end }} - {{- with .Values.sidecar.livenessProbe }} - livenessProbe: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.readinessProbe }} - readinessProbe: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.securityContext }} - securityContext: - {{- toYaml . | nindent 6 }} - {{- end }} - volumeMounts: - - name: sc-alerts-volume - mountPath: "/etc/grafana/provisioning/alerting" - {{- with .Values.sidecar.alerts.extraMounts }} - {{- toYaml . | trim | nindent 6 }} - {{- end }} -{{- end }} -{{- if and .Values.sidecar.datasources.enabled .Values.sidecar.datasources.initDatasources }} - - name: {{ include "grafana.name" . }}-init-sc-datasources - {{- $registry := include "system_default_registry" . | default .Values.sidecar.image.registry -}} - {{- if .Values.sidecar.image.sha }} - image: "{{ $registry }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ $registry }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - env: - {{- range $key, $value := .Values.sidecar.datasources.env }} - - name: "{{ $key }}" - value: "{{ $value }}" - {{- end }} - {{- if .Values.sidecar.datasources.ignoreAlreadyProcessed }} - - name: IGNORE_ALREADY_PROCESSED - value: "true" - {{- end }} - - name: METHOD - value: "LIST" - - name: LABEL - value: "{{ .Values.sidecar.datasources.label }}" - {{- with .Values.sidecar.datasources.labelValue }} - - name: LABEL_VALUE - value: {{ quote . }} - {{- end }} - {{- if or .Values.sidecar.logLevel .Values.sidecar.datasources.logLevel }} - - name: LOG_LEVEL - value: {{ default .Values.sidecar.logLevel .Values.sidecar.datasources.logLevel }} - {{- end }} - - name: FOLDER - value: "/etc/grafana/provisioning/datasources" - - name: RESOURCE - value: {{ quote .Values.sidecar.datasources.resource }} - {{- with .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ . }}" - {{- end }} - {{- if .Values.sidecar.datasources.searchNamespace }} - - name: NAMESPACE - value: "{{ tpl (.Values.sidecar.datasources.searchNamespace | join ",") . }}" - {{- end }} - {{- with .Values.sidecar.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: "{{ . }}" - {{- end }} - {{- with .Values.sidecar.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.securityContext }} - securityContext: - {{- toYaml . | nindent 6 }} - {{- end }} - volumeMounts: - - name: sc-datasources-volume - mountPath: "/etc/grafana/provisioning/datasources" -{{- end }} -{{- if and .Values.sidecar.notifiers.enabled .Values.sidecar.notifiers.initNotifiers }} - - name: {{ include "grafana.name" . }}-init-sc-notifiers - {{- $registry := include "system_default_registry" . | default .Values.sidecar.image.registry -}} - {{- if .Values.sidecar.image.sha }} - image: "{{ $registry }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ $registry }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - env: - {{- range $key, $value := .Values.sidecar.notifiers.env }} - - name: "{{ $key }}" - value: "{{ $value }}" - {{- end }} - {{- if .Values.sidecar.notifiers.ignoreAlreadyProcessed }} - - name: IGNORE_ALREADY_PROCESSED - value: "true" - {{- end }} - - name: METHOD - value: LIST - - name: LABEL - value: "{{ .Values.sidecar.notifiers.label }}" - {{- with .Values.sidecar.notifiers.labelValue }} - - name: LABEL_VALUE - value: {{ quote . }} - {{- end }} - {{- if or .Values.sidecar.logLevel .Values.sidecar.notifiers.logLevel }} - - name: LOG_LEVEL - value: {{ default .Values.sidecar.logLevel .Values.sidecar.notifiers.logLevel }} - {{- end }} - - name: FOLDER - value: "/etc/grafana/provisioning/notifiers" - - name: RESOURCE - value: {{ quote .Values.sidecar.notifiers.resource }} - {{- with .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ . }}" - {{- end }} - {{- with .Values.sidecar.notifiers.searchNamespace }} - - name: NAMESPACE - value: "{{ tpl (. | join ",") $root }}" - {{- end }} - {{- with .Values.sidecar.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: "{{ . }}" - {{- end }} - {{- with .Values.sidecar.livenessProbe }} - livenessProbe: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.readinessProbe }} - readinessProbe: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.securityContext }} - securityContext: - {{- toYaml . | nindent 6 }} - {{- end }} - volumeMounts: - - name: sc-notifiers-volume - mountPath: "/etc/grafana/provisioning/notifiers" -{{- end}} -{{- with .Values.extraInitContainers }} - {{- tpl (toYaml .) $root | nindent 2 }} -{{- end }} -{{- if or .Values.image.pullSecrets .Values.global.imagePullSecrets }} -imagePullSecrets: - {{- include "grafana.imagePullSecrets" (dict "root" $root "imagePullSecrets" .Values.image.pullSecrets) | nindent 2 }} -{{- end }} -{{- if not .Values.enableKubeBackwardCompatibility }} -enableServiceLinks: {{ .Values.enableServiceLinks }} -{{- end }} -containers: -{{- if and .Values.sidecar.alerts.enabled (not .Values.sidecar.alerts.initAlerts) }} - - name: {{ include "grafana.name" . }}-sc-alerts - {{- $registry := include "system_default_registry" . | default .Values.sidecar.image.registry -}} - {{- if .Values.sidecar.image.sha }} - image: "{{ $registry }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ $registry }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - env: - {{- range $key, $value := .Values.sidecar.alerts.env }} - - name: "{{ $key }}" - value: "{{ $value }}" - {{- end }} - {{- if .Values.sidecar.alerts.ignoreAlreadyProcessed }} - - name: IGNORE_ALREADY_PROCESSED - value: "true" - {{- end }} - - name: METHOD - value: {{ .Values.sidecar.alerts.watchMethod }} - - name: LABEL - value: "{{ .Values.sidecar.alerts.label }}" - {{- with .Values.sidecar.alerts.labelValue }} - - name: LABEL_VALUE - value: {{ quote . }} - {{- end }} - {{- if or .Values.sidecar.logLevel .Values.sidecar.alerts.logLevel }} - - name: LOG_LEVEL - value: {{ default .Values.sidecar.logLevel .Values.sidecar.alerts.logLevel }} - {{- end }} - - name: FOLDER - value: "/etc/grafana/provisioning/alerting" - - name: RESOURCE - value: {{ quote .Values.sidecar.alerts.resource }} - {{- with .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ . }}" - {{- end }} - {{- with .Values.sidecar.alerts.searchNamespace }} - - name: NAMESPACE - value: {{ . | join "," | quote }} - {{- end }} - {{- with .Values.sidecar.alerts.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: {{ quote . }} - {{- end }} - {{- with .Values.sidecar.alerts.script }} - - name: SCRIPT - value: {{ quote . }} - {{- end }} - {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }} - - name: REQ_USERNAME - valueFrom: - secretKeyRef: - name: {{ (tpl .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) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }} - - name: REQ_PASSWORD - valueFrom: - secretKeyRef: - name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }} - key: {{ .Values.admin.passwordKey | default "admin-password" }} - {{- end }} - {{- if not .Values.sidecar.alerts.skipReload }} - - name: REQ_URL - value: {{ .Values.sidecar.alerts.reloadURL }} - - name: REQ_METHOD - value: POST - {{- end }} - {{- if .Values.sidecar.alerts.watchServerTimeout }} - {{- if ne .Values.sidecar.alerts.watchMethod "WATCH" }} - {{- fail (printf "Cannot use .Values.sidecar.alerts.watchServerTimeout with .Values.sidecar.alerts.watchMethod %s" .Values.sidecar.alerts.watchMethod) }} - {{- end }} - - name: WATCH_SERVER_TIMEOUT - value: "{{ .Values.sidecar.alerts.watchServerTimeout }}" - {{- end }} - {{- if .Values.sidecar.alerts.watchClientTimeout }} - {{- if ne .Values.sidecar.alerts.watchMethod "WATCH" }} - {{- fail (printf "Cannot use .Values.sidecar.alerts.watchClientTimeout with .Values.sidecar.alerts.watchMethod %s" .Values.sidecar.alerts.watchMethod) }} - {{- end }} - - name: WATCH_CLIENT_TIMEOUT - value: "{{ .Values.sidecar.alerts.watchClientTimeout }}" - {{- end }} - {{- with .Values.sidecar.livenessProbe }} - livenessProbe: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.readinessProbe }} - readinessProbe: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.securityContext }} - securityContext: - {{- toYaml . | nindent 6 }} - {{- end }} - volumeMounts: - - name: sc-alerts-volume - mountPath: "/etc/grafana/provisioning/alerting" - {{- with .Values.sidecar.alerts.extraMounts }} - {{- toYaml . | trim | nindent 6 }} - {{- end }} -{{- end}} -{{- if .Values.sidecar.dashboards.enabled }} - - name: {{ include "grafana.name" . }}-sc-dashboard - {{- $registry := include "system_default_registry" . | default .Values.sidecar.image.registry -}} - {{- if .Values.sidecar.image.sha }} - image: "{{ $registry }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ $registry }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - env: - {{- range $key, $value := .Values.sidecar.dashboards.env }} - - name: "{{ $key }}" - value: "{{ $value }}" - {{- end }} - {{- range $key, $value := .Values.sidecar.datasources.envValueFrom }} - - name: {{ $key | quote }} - valueFrom: - {{- tpl (toYaml $value) $ | nindent 10 }} - {{- end }} - {{- if .Values.sidecar.dashboards.ignoreAlreadyProcessed }} - - name: IGNORE_ALREADY_PROCESSED - value: "true" - {{- end }} - - name: METHOD - value: {{ .Values.sidecar.dashboards.watchMethod }} - - name: LABEL - value: "{{ .Values.sidecar.dashboards.label }}" - {{- with .Values.sidecar.dashboards.labelValue }} - - name: LABEL_VALUE - value: {{ quote . }} - {{- end }} - {{- if or .Values.sidecar.logLevel .Values.sidecar.dashboards.logLevel }} - - name: LOG_LEVEL - value: {{ default .Values.sidecar.logLevel .Values.sidecar.dashboards.logLevel }} - {{- end }} - - name: FOLDER - value: "{{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }}" - - name: RESOURCE - value: {{ quote .Values.sidecar.dashboards.resource }} - {{- with .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ . }}" - {{- end }} - {{- with .Values.sidecar.dashboards.searchNamespace }} - - name: NAMESPACE - value: "{{ tpl (. | join ",") $root }}" - {{- end }} - {{- with .Values.sidecar.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: "{{ . }}" - {{- end }} - {{- with .Values.sidecar.dashboards.folderAnnotation }} - - name: FOLDER_ANNOTATION - value: "{{ . }}" - {{- end }} - {{- with .Values.sidecar.dashboards.script }} - - name: SCRIPT - value: "{{ . }}" - {{- end }} - {{- if not .Values.sidecar.dashboards.skipReload }} - {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }} - - name: REQ_USERNAME - valueFrom: - secretKeyRef: - name: {{ (tpl .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) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }} - - name: REQ_PASSWORD - valueFrom: - secretKeyRef: - name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }} - key: {{ .Values.admin.passwordKey | default "admin-password" }} - {{- end }} - - name: REQ_URL - value: {{ .Values.sidecar.dashboards.reloadURL }} - - name: REQ_METHOD - value: POST - {{- end }} - {{- if .Values.sidecar.dashboards.watchServerTimeout }} - {{- if ne .Values.sidecar.dashboards.watchMethod "WATCH" }} - {{- fail (printf "Cannot use .Values.sidecar.dashboards.watchServerTimeout with .Values.sidecar.dashboards.watchMethod %s" .Values.sidecar.dashboards.watchMethod) }} - {{- end }} - - name: WATCH_SERVER_TIMEOUT - value: "{{ .Values.sidecar.dashboards.watchServerTimeout }}" - {{- end }} - {{- if .Values.sidecar.dashboards.watchClientTimeout }} - {{- if ne .Values.sidecar.dashboards.watchMethod "WATCH" }} - {{- fail (printf "Cannot use .Values.sidecar.dashboards.watchClientTimeout with .Values.sidecar.dashboards.watchMethod %s" .Values.sidecar.dashboards.watchMethod) }} - {{- end }} - - name: WATCH_CLIENT_TIMEOUT - value: {{ .Values.sidecar.dashboards.watchClientTimeout | quote }} - {{- end }} - {{- with .Values.sidecar.livenessProbe }} - livenessProbe: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.readinessProbe }} - readinessProbe: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.securityContext }} - securityContext: - {{- toYaml . | nindent 6 }} - {{- end }} - volumeMounts: - - name: sc-dashboard-volume - mountPath: {{ .Values.sidecar.dashboards.folder | quote }} - {{- with .Values.sidecar.dashboards.extraMounts }} - {{- toYaml . | trim | nindent 6 }} - {{- end }} -{{- end}} -{{- if and .Values.sidecar.datasources.enabled (not .Values.sidecar.datasources.initDatasources) }} - - name: {{ include "grafana.name" . }}-sc-datasources - {{- $registry := include "system_default_registry" . | default .Values.sidecar.image.registry -}} - {{- if .Values.sidecar.image.sha }} - image: "{{ $registry }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ $registry }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - env: - {{- range $key, $value := .Values.sidecar.datasources.env }} - - name: "{{ $key }}" - value: "{{ $value }}" - {{- end }} - {{- if .Values.sidecar.datasources.ignoreAlreadyProcessed }} - - name: IGNORE_ALREADY_PROCESSED - value: "true" - {{- end }} - - name: METHOD - value: {{ .Values.sidecar.datasources.watchMethod }} - - name: LABEL - value: "{{ .Values.sidecar.datasources.label }}" - {{- with .Values.sidecar.datasources.labelValue }} - - name: LABEL_VALUE - value: {{ quote . }} - {{- end }} - {{- if or .Values.sidecar.logLevel .Values.sidecar.datasources.logLevel }} - - name: LOG_LEVEL - value: {{ default .Values.sidecar.logLevel .Values.sidecar.datasources.logLevel }} - {{- end }} - - name: FOLDER - value: "/etc/grafana/provisioning/datasources" - - name: RESOURCE - value: {{ quote .Values.sidecar.datasources.resource }} - {{- with .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ . }}" - {{- end }} - {{- with .Values.sidecar.datasources.searchNamespace }} - - name: NAMESPACE - value: "{{ tpl (. | join ",") $root }}" - {{- end }} - {{- if .Values.sidecar.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: "{{ .Values.sidecar.skipTlsVerify }}" - {{- end }} - {{- if .Values.sidecar.datasources.script }} - - name: SCRIPT - value: "{{ .Values.sidecar.datasources.script }}" - {{- end }} - {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }} - - name: REQ_USERNAME - valueFrom: - secretKeyRef: - name: {{ (tpl .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) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }} - - name: REQ_PASSWORD - valueFrom: - secretKeyRef: - name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }} - key: {{ .Values.admin.passwordKey | default "admin-password" }} - {{- end }} - {{- if not .Values.sidecar.datasources.skipReload }} - - name: REQ_URL - value: {{ .Values.sidecar.datasources.reloadURL }} - - name: REQ_METHOD - value: POST - {{- end }} - {{- if .Values.sidecar.datasources.watchServerTimeout }} - {{- if ne .Values.sidecar.datasources.watchMethod "WATCH" }} - {{- fail (printf "Cannot use .Values.sidecar.datasources.watchServerTimeout with .Values.sidecar.datasources.watchMethod %s" .Values.sidecar.datasources.watchMethod) }} - {{- end }} - - name: WATCH_SERVER_TIMEOUT - value: "{{ .Values.sidecar.datasources.watchServerTimeout }}" - {{- end }} - {{- if .Values.sidecar.datasources.watchClientTimeout }} - {{- if ne .Values.sidecar.datasources.watchMethod "WATCH" }} - {{- fail (printf "Cannot use .Values.sidecar.datasources.watchClientTimeout with .Values.sidecar.datasources.watchMethod %s" .Values.sidecar.datasources.watchMethod) }} - {{- end }} - - name: WATCH_CLIENT_TIMEOUT - value: "{{ .Values.sidecar.datasources.watchClientTimeout }}" - {{- end }} - {{- with .Values.sidecar.livenessProbe }} - livenessProbe: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.readinessProbe }} - readinessProbe: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.securityContext }} - securityContext: - {{- toYaml . | nindent 6 }} - {{- end }} - volumeMounts: - - name: sc-datasources-volume - mountPath: "/etc/grafana/provisioning/datasources" -{{- end}} -{{- if .Values.sidecar.notifiers.enabled }} - - name: {{ include "grafana.name" . }}-sc-notifiers - {{- $registry := include "system_default_registry" . | default .Values.sidecar.image.registry -}} - {{- if .Values.sidecar.image.sha }} - image: "{{ $registry }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ $registry }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - env: - {{- range $key, $value := .Values.sidecar.notifiers.env }} - - name: "{{ $key }}" - value: "{{ $value }}" - {{- end }} - {{- if .Values.sidecar.notifiers.ignoreAlreadyProcessed }} - - name: IGNORE_ALREADY_PROCESSED - value: "true" - {{- end }} - - name: METHOD - value: {{ .Values.sidecar.notifiers.watchMethod }} - - name: LABEL - value: "{{ .Values.sidecar.notifiers.label }}" - {{- with .Values.sidecar.notifiers.labelValue }} - - name: LABEL_VALUE - value: {{ quote . }} - {{- end }} - {{- if or .Values.sidecar.logLevel .Values.sidecar.notifiers.logLevel }} - - name: LOG_LEVEL - value: {{ default .Values.sidecar.logLevel .Values.sidecar.notifiers.logLevel }} - {{- end }} - - name: FOLDER - value: "/etc/grafana/provisioning/notifiers" - - name: RESOURCE - value: {{ quote .Values.sidecar.notifiers.resource }} - {{- if .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ .Values.sidecar.enableUniqueFilenames }}" - {{- end }} - {{- with .Values.sidecar.notifiers.searchNamespace }} - - name: NAMESPACE - value: "{{ tpl (. | join ",") $root }}" - {{- end }} - {{- with .Values.sidecar.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: "{{ . }}" - {{- end }} - {{- if .Values.sidecar.notifiers.script }} - - name: SCRIPT - value: "{{ .Values.sidecar.notifiers.script }}" - {{- end }} - {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }} - - name: REQ_USERNAME - valueFrom: - secretKeyRef: - name: {{ (tpl .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) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }} - - name: REQ_PASSWORD - valueFrom: - secretKeyRef: - name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }} - key: {{ .Values.admin.passwordKey | default "admin-password" }} - {{- end }} - {{- if not .Values.sidecar.notifiers.skipReload }} - - name: REQ_URL - value: {{ .Values.sidecar.notifiers.reloadURL }} - - name: REQ_METHOD - value: POST - {{- end }} - {{- if .Values.sidecar.notifiers.watchServerTimeout }} - {{- if ne .Values.sidecar.notifiers.watchMethod "WATCH" }} - {{- fail (printf "Cannot use .Values.sidecar.notifiers.watchServerTimeout with .Values.sidecar.notifiers.watchMethod %s" .Values.sidecar.notifiers.watchMethod) }} - {{- end }} - - name: WATCH_SERVER_TIMEOUT - value: "{{ .Values.sidecar.notifiers.watchServerTimeout }}" - {{- end }} - {{- if .Values.sidecar.notifiers.watchClientTimeout }} - {{- if ne .Values.sidecar.notifiers.watchMethod "WATCH" }} - {{- fail (printf "Cannot use .Values.sidecar.notifiers.watchClientTimeout with .Values.sidecar.notifiers.watchMethod %s" .Values.sidecar.notifiers.watchMethod) }} - {{- end }} - - name: WATCH_CLIENT_TIMEOUT - value: "{{ .Values.sidecar.notifiers.watchClientTimeout }}" - {{- end }} - {{- with .Values.sidecar.livenessProbe }} - livenessProbe: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.readinessProbe }} - readinessProbe: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.securityContext }} - securityContext: - {{- toYaml . | nindent 6 }} - {{- end }} - volumeMounts: - - name: sc-notifiers-volume - mountPath: "/etc/grafana/provisioning/notifiers" -{{- end}} -{{- if .Values.sidecar.plugins.enabled }} - - name: {{ include "grafana.name" . }}-sc-plugins - {{- $registry := include "system_default_registry" . | default .Values.sidecar.image.registry -}} - {{- if .Values.sidecar.image.sha }} - image: "{{ $registry }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ $registry }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - env: - {{- range $key, $value := .Values.sidecar.plugins.env }} - - name: "{{ $key }}" - value: "{{ $value }}" - {{- end }} - {{- if .Values.sidecar.plugins.ignoreAlreadyProcessed }} - - name: IGNORE_ALREADY_PROCESSED - value: "true" - {{- end }} - - name: METHOD - value: {{ .Values.sidecar.plugins.watchMethod }} - - name: LABEL - value: "{{ .Values.sidecar.plugins.label }}" - {{- if .Values.sidecar.plugins.labelValue }} - - name: LABEL_VALUE - value: {{ quote .Values.sidecar.plugins.labelValue }} - {{- end }} - {{- if or .Values.sidecar.logLevel .Values.sidecar.plugins.logLevel }} - - name: LOG_LEVEL - value: {{ default .Values.sidecar.logLevel .Values.sidecar.plugins.logLevel }} - {{- end }} - - name: FOLDER - value: "/etc/grafana/provisioning/plugins" - - name: RESOURCE - value: {{ quote .Values.sidecar.plugins.resource }} - {{- with .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ . }}" - {{- end }} - {{- with .Values.sidecar.plugins.searchNamespace }} - - name: NAMESPACE - value: "{{ tpl (. | join ",") $root }}" - {{- end }} - {{- with .Values.sidecar.plugins.script }} - - name: SCRIPT - value: "{{ . }}" - {{- end }} - {{- with .Values.sidecar.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: "{{ . }}" - {{- end }} - {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }} - - name: REQ_USERNAME - valueFrom: - secretKeyRef: - name: {{ (tpl .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) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }} - - name: REQ_PASSWORD - valueFrom: - secretKeyRef: - name: {{ (tpl .Values.admin.existingSecret .) | default (include "grafana.fullname" .) }} - key: {{ .Values.admin.passwordKey | default "admin-password" }} - {{- end }} - {{- if not .Values.sidecar.plugins.skipReload }} - - name: REQ_URL - value: {{ .Values.sidecar.plugins.reloadURL }} - - name: REQ_METHOD - value: POST - {{- end }} - {{- if .Values.sidecar.plugins.watchServerTimeout }} - {{- if ne .Values.sidecar.plugins.watchMethod "WATCH" }} - {{- fail (printf "Cannot use .Values.sidecar.plugins.watchServerTimeout with .Values.sidecar.plugins.watchMethod %s" .Values.sidecar.plugins.watchMethod) }} - {{- end }} - - name: WATCH_SERVER_TIMEOUT - value: "{{ .Values.sidecar.plugins.watchServerTimeout }}" - {{- end }} - {{- if .Values.sidecar.plugins.watchClientTimeout }} - {{- if ne .Values.sidecar.plugins.watchMethod "WATCH" }} - {{- fail (printf "Cannot use .Values.sidecar.plugins.watchClientTimeout with .Values.sidecar.plugins.watchMethod %s" .Values.sidecar.plugins.watchMethod) }} - {{- end }} - - name: WATCH_CLIENT_TIMEOUT - value: "{{ .Values.sidecar.plugins.watchClientTimeout }}" - {{- end }} - {{- with .Values.sidecar.livenessProbe }} - livenessProbe: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.readinessProbe }} - readinessProbe: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sidecar.securityContext }} - securityContext: - {{- toYaml . | nindent 6 }} - {{- end }} - volumeMounts: - - name: sc-plugins-volume - mountPath: "/etc/grafana/provisioning/plugins" -{{- end}} - - name: {{ .Chart.Name }} - {{- $registry := include "system_default_registry" . | default .Values.image.registry -}} - {{- if .Values.image.sha }} - image: "{{ $registry }}{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}@sha256:{{ .Values.image.sha }}" - {{- else }} - image: "{{ $registry }}{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" - {{- end }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - {{- if .Values.command }} - command: - {{- range .Values.command }} - - {{ . | quote }} - {{- end }} - {{- end }} - {{- if .Values.args }} - args: - {{- range .Values.args }} - - {{ . | quote }} - {{- end }} - {{- end }} - {{- with .Values.containerSecurityContext }} - securityContext: - {{- toYaml . | 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: {{ tpl .name $root }} - mountPath: {{ tpl .mountPath $root }} - subPath: {{ tpl (.subPath | default "") $root }} - readOnly: {{ .readOnly }} - {{- end }} - - name: storage - mountPath: "/var/lib/grafana" - {{- with .Values.persistence.subPath }} - subPath: {{ tpl . $root }} - {{- end }} - {{- with .Values.dashboards }} - {{- range $provider, $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 }} - {{- with .Values.dashboardsConfigMaps }} - {{- range (keys . | sortAlpha) }} - - name: dashboards-{{ . }} - mountPath: "/var/lib/grafana/dashboards/{{ . }}" - {{- end }} - {{- end }} - {{- with .Values.datasources }} - {{- $datasources := . }} - {{- range (keys . | sortAlpha) }} - {{- if (or (hasKey (index $datasources .) "secret")) }} {{/*check if current datasource should be handeled as secret */}} - - name: config-secret - mountPath: "/etc/grafana/provisioning/datasources/{{ . }}" - subPath: {{ . | quote }} - {{- else }} - - name: config - mountPath: "/etc/grafana/provisioning/datasources/{{ . }}" - subPath: {{ . | quote }} - {{- end }} - {{- end }} - {{- end }} - {{- with .Values.notifiers }} - {{- $notifiers := . }} - {{- range (keys . | sortAlpha) }} - {{- if (or (hasKey (index $notifiers .) "secret")) }} {{/*check if current notifier should be handeled as secret */}} - - name: config-secret - mountPath: "/etc/grafana/provisioning/notifiers/{{ . }}" - subPath: {{ . | quote }} - {{- else }} - - name: config - mountPath: "/etc/grafana/provisioning/notifiers/{{ . }}" - subPath: {{ . | quote }} - {{- end }} - {{- end }} - {{- end }} - {{- with .Values.alerting }} - {{- $alertingmap := .}} - {{- range (keys . | sortAlpha) }} - {{- if (or (hasKey (index $.Values.alerting .) "secret") (hasKey (index $.Values.alerting .) "secretFile")) }} {{/*check if current alerting entry should be handeled as secret */}} - - name: config-secret - mountPath: "/etc/grafana/provisioning/alerting/{{ . }}" - subPath: {{ . | quote }} - {{- else }} - - name: config - mountPath: "/etc/grafana/provisioning/alerting/{{ . }}" - subPath: {{ . | quote }} - {{- end }} - {{- end }} - {{- end }} - {{- with .Values.dashboardProviders }} - {{- range (keys . | sortAlpha) }} - - name: config - mountPath: "/etc/grafana/provisioning/dashboards/{{ . }}" - subPath: {{ . | quote }} - {{- end }} - {{- end }} - {{- with .Values.sidecar.alerts.enabled }} - - name: sc-alerts-volume - mountPath: "/etc/grafana/provisioning/alerting" - {{- 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.plugins.enabled }} - - name: sc-plugins-volume - mountPath: "/etc/grafana/provisioning/plugins" - {{- 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.podPortName }} - containerPort: {{ .Values.service.targetPort }} - protocol: TCP - - name: {{ .Values.gossipPortName }}-tcp - containerPort: 9094 - protocol: TCP - - name: {{ .Values.gossipPortName }}-udp - containerPort: 9094 - protocol: UDP - env: - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }} - - name: GF_SECURITY_ADMIN_USER - valueFrom: - secretKeyRef: - name: {{ (tpl .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) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }} - - name: GF_SECURITY_ADMIN_PASSWORD - valueFrom: - secretKeyRef: - name: {{ (tpl .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: {{ include "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://{{ include "grafana.fullname" . }}-image-renderer.{{ include "grafana.namespace" . }}:{{ .Values.imageRenderer.service.port }}/render - - name: GF_RENDERING_CALLBACK_URL - value: {{ .Values.imageRenderer.grafanaProtocol }}://{{ include "grafana.fullname" . }}.{{ include "grafana.namespace" . }}:{{ .Values.service.port }}/{{ .Values.imageRenderer.grafanaSubPath }} - {{- end }} - - name: GF_PATHS_DATA - value: {{ (get .Values "grafana.ini").paths.data }} - - name: GF_PATHS_LOGS - value: {{ (get .Values "grafana.ini").paths.logs }} - - name: GF_PATHS_PLUGINS - value: {{ (get .Values "grafana.ini").paths.plugins }} - - name: GF_PATHS_PROVISIONING - value: {{ (get .Values "grafana.ini").paths.provisioning }} - {{- range $key, $value := .Values.envValueFrom }} - - name: {{ $key | quote }} - valueFrom: - {{- tpl (toYaml $value) $ | nindent 10 }} - {{- end }} - {{- range $key, $value := .Values.env }} - - name: "{{ tpl $key $ }}" - value: "{{ tpl (print $value) $ }}" - {{- end }} - {{- if or .Values.envFromSecret (or .Values.envRenderSecret .Values.envFromSecrets) .Values.envFromConfigMaps }} - envFrom: - {{- if .Values.envFromSecret }} - - secretRef: - name: {{ tpl .Values.envFromSecret . }} - {{- end }} - {{- if .Values.envRenderSecret }} - - secretRef: - name: {{ include "grafana.fullname" . }}-env - {{- end }} - {{- range .Values.envFromSecrets }} - - secretRef: - name: {{ tpl .name $ }} - optional: {{ .optional | default false }} - {{- if .prefix }} - prefix: {{ tpl .prefix $ }} - {{- end }} - {{- end }} - {{- range .Values.envFromConfigMaps }} - - configMapRef: - name: {{ tpl .name $ }} - optional: {{ .optional | default false }} - {{- if .prefix }} - prefix: {{ tpl .prefix $ }} - {{- end }} - {{- end }} - {{- end }} - {{- with .Values.livenessProbe }} - livenessProbe: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.readinessProbe }} - readinessProbe: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.lifecycleHooks }} - lifecycle: - {{- tpl (toYaml .) $root | nindent 6 }} - {{- end }} - {{- with .Values.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- with .Values.extraContainers }} - {{- tpl . $ | nindent 2 }} -{{- end }} -nodeSelector: {{ include "linux-node-selector" . | nindent 2 }} -{{- with .Values.nodeSelector }} - {{- toYaml . | nindent 2 }} -{{- end }} -{{- with .Values.affinity }} -affinity: - {{- tpl (toYaml .) $root | nindent 2 }} -{{- end }} -{{- with .Values.topologySpreadConstraints }} -topologySpreadConstraints: - {{- toYaml . | nindent 2 }} -{{- end }} -tolerations: {{ include "linux-node-tolerations" . | nindent 2 }} -{{- with .Values.tolerations }} - {{- toYaml . | nindent 2 }} -{{- end }} -volumes: - - name: config - configMap: - name: {{ include "grafana.fullname" . }} - {{- $createConfigSecret := eq (include "grafana.shouldCreateConfigSecret" .) "true" -}} - {{- if and .Values.createConfigmap $createConfigSecret }} - - name: config-secret - secret: - secretName: {{ include "grafana.fullname" . }}-config-secret - {{- end }} - {{- range .Values.extraConfigmapMounts }} - - name: {{ tpl .name $root }} - configMap: - name: {{ tpl .configMap $root }} - {{- with .items }} - items: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - {{- if .Values.dashboards }} - {{- range (keys .Values.dashboards | sortAlpha) }} - - name: dashboards-{{ . }} - configMap: - name: {{ include "grafana.fullname" $ }}-dashboards-{{ . }} - {{- end }} - {{- end }} - {{- if .Values.dashboardsConfigMaps }} - {{- 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: {{ include "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: {{ tpl (.Values.persistence.existingClaim | default (include "grafana.fullname" .)) . }} - {{- else if and .Values.persistence.enabled (has .Values.persistence.type $sts) }} - {{/* nothing */}} - {{- else }} - - name: storage - {{- if .Values.persistence.inMemory.enabled }} - emptyDir: - medium: Memory - {{- with .Values.persistence.inMemory.sizeLimit }} - sizeLimit: {{ . }} - {{- end }} - {{- else }} - emptyDir: {} - {{- end }} - {{- end }} - {{- if .Values.sidecar.alerts.enabled }} - - name: sc-alerts-volume - emptyDir: - {{- with .Values.sidecar.alerts.sizeLimit }} - sizeLimit: {{ . }} - {{- else }} - {} - {{- end }} - {{- end }} - {{- if .Values.sidecar.dashboards.enabled }} - - name: sc-dashboard-volume - emptyDir: - {{- with .Values.sidecar.dashboards.sizeLimit }} - sizeLimit: {{ . }} - {{- else }} - {} - {{- end }} - {{- if .Values.sidecar.dashboards.SCProvider }} - - name: sc-dashboard-provider - configMap: - name: {{ include "grafana.fullname" . }}-config-dashboards - {{- end }} - {{- end }} - {{- if .Values.sidecar.datasources.enabled }} - - name: sc-datasources-volume - emptyDir: - {{- with .Values.sidecar.datasources.sizeLimit }} - sizeLimit: {{ . }} - {{- else }} - {} - {{- end }} - {{- end }} - {{- if .Values.sidecar.plugins.enabled }} - - name: sc-plugins-volume - emptyDir: - {{- with .Values.sidecar.plugins.sizeLimit }} - sizeLimit: {{ . }} - {{- else }} - {} - {{- end }} - {{- end }} - {{- if .Values.sidecar.notifiers.enabled }} - - name: sc-notifiers-volume - emptyDir: - {{- with .Values.sidecar.notifiers.sizeLimit }} - sizeLimit: {{ . }} - {{- else }} - {} - {{- end }} - {{- end }} - {{- range .Values.extraSecretMounts }} - {{- if .secretName }} - - name: {{ .name }} - secret: - secretName: {{ .secretName }} - defaultMode: {{ .defaultMode }} - {{- with .items }} - items: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- else if .projected }} - - name: {{ .name }} - projected: - {{- toYaml .projected | nindent 6 }} - {{- else if .csi }} - - name: {{ .name }} - csi: - {{- toYaml .csi | nindent 6 }} - {{- end }} - {{- end }} - {{- range .Values.extraVolumes }} - - name: {{ .name }} - {{- if .existingClaim }} - persistentVolumeClaim: - claimName: {{ .existingClaim }} - {{- else if .hostPath }} - hostPath: - {{ toYaml .hostPath | nindent 6 }} - {{- else if .csi }} - csi: - {{- toYaml .csi | nindent 6 }} - {{- else if .configMap }} - configMap: - {{- toYaml .configMap | nindent 6 }} - {{- else if .emptyDir }} - emptyDir: - {{- toYaml .emptyDir | nindent 6 }} - {{- else }} - emptyDir: {} - {{- end }} - {{- end }} - {{- range .Values.extraEmptyDirMounts }} - - name: {{ .name }} - emptyDir: {} - {{- end }} - {{- with .Values.extraContainerVolumes }} - {{- tpl (toYaml .) $root | nindent 2 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/clusterrole.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/clusterrole.yaml deleted file mode 100644 index 3af4b62..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/clusterrole.yaml +++ /dev/null @@ -1,25 +0,0 @@ -{{- if and .Values.rbac.create (or (not .Values.rbac.namespaced) .Values.rbac.extraClusterRoleRules) (not .Values.rbac.useExistingClusterRole) }} -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} - name: {{ include "grafana.fullname" . }}-clusterrole -{{- if or .Values.sidecar.dashboards.enabled .Values.rbac.extraClusterRoleRules .Values.sidecar.datasources.enabled .Values.sidecar.plugins.enabled .Values.sidecar.alerts.enabled }} -rules: - {{- if or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled .Values.sidecar.plugins.enabled .Values.sidecar.alerts.enabled }} - - apiGroups: [""] # "" indicates the core API group - resources: ["configmaps", "secrets"] - verbs: ["get", "watch", "list"] - {{- end}} - {{- with .Values.rbac.extraClusterRoleRules }} - {{- toYaml . | nindent 2 }} - {{- end}} -{{- else }} -rules: [] -{{- end}} -{{- end}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/clusterrolebinding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/clusterrolebinding.yaml deleted file mode 100644 index bda9431..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if and .Values.rbac.create (or (not .Values.rbac.namespaced) .Values.rbac.extraClusterRoleRules) }} -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{ include "grafana.fullname" . }}-clusterrolebinding - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -subjects: - - kind: ServiceAccount - name: {{ include "grafana.serviceAccountName" . }} - namespace: {{ include "grafana.namespace" . }} -roleRef: - kind: ClusterRole - {{- if .Values.rbac.useExistingClusterRole }} - name: {{ .Values.rbac.useExistingClusterRole }} - {{- else }} - name: {{ include "grafana.fullname" . }}-clusterrole - {{- end }} - apiGroup: rbac.authorization.k8s.io -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/configSecret.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/configSecret.yaml deleted file mode 100644 index 55574b9..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/configSecret.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- $createConfigSecret := eq (include "grafana.shouldCreateConfigSecret" .) "true" -}} -{{- if and .Values.createConfigmap $createConfigSecret }} -{{- $files := .Files }} -{{- $root := . -}} -apiVersion: v1 -kind: Secret -metadata: - name: "{{ include "grafana.fullname" . }}-config-secret" - namespace: {{ include "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -data: -{{- range $key, $value := .Values.alerting }} - {{- if (hasKey $value "secretFile") }} - {{- $key | nindent 2 }}: - {{- toYaml ( $files.Get $value.secretFile ) | b64enc | nindent 4}} - {{/* as of https://helm.sh/docs/chart_template_guide/accessing_files/ this will only work if you fork this chart and add files to it*/}} - {{- end }} -{{- end }} -stringData: -{{- range $key, $value := .Values.datasources }} -{{- if (hasKey $value "secret") }} -{{- $key | nindent 2 }}: | - {{- tpl (toYaml $value.secret | nindent 4) $root }} -{{- end }} -{{- end }} -{{- range $key, $value := .Values.notifiers }} -{{- if (hasKey $value "secret") }} -{{- $key | nindent 2 }}: | - {{- tpl (toYaml $value.secret | nindent 4) $root }} -{{- end }} -{{- end }} -{{- range $key, $value := .Values.alerting }} -{{ if (hasKey $value "secret") }} - {{- $key | nindent 2 }}: | - {{- tpl (toYaml $value.secret | nindent 4) $root }} - {{- end }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/configmap-dashboard-provider.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/configmap-dashboard-provider.yaml deleted file mode 100644 index b412c4d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/configmap-dashboard-provider.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if and .Values.sidecar.dashboards.enabled .Values.sidecar.dashboards.SCProvider }} -apiVersion: v1 -kind: ConfigMap -metadata: - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} - name: {{ include "grafana.fullname" . }}-config-dashboards - namespace: {{ include "grafana.namespace" . }} -data: - {{- include "grafana.configDashboardProviderData" . | nindent 2 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/configmap.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/configmap.yaml deleted file mode 100644 index 7d7428b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/configmap.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if .Values.createConfigmap }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "grafana.fullname" . }} - namespace: {{ include "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -data: - {{- include "grafana.configData" . | nindent 2 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/dashboards-json-configmap.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/dashboards-json-configmap.yaml deleted file mode 100644 index b96ce72..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/dashboards-json-configmap.yaml +++ /dev/null @@ -1,38 +0,0 @@ -{{- if .Values.dashboards }} -{{ $files := .Files }} -{{- range $provider, $dashboards := .Values.dashboards }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "grafana.fullname" $ }}-dashboards-{{ $provider }} - namespace: {{ include "grafana.namespace" $ }} - labels: - {{- include "grafana.labels" $ | nindent 4 }} - dashboard-provider: {{ $provider }} - {{- if $.Values.sidecar.dashboards.enabled }} - {{ $.Values.sidecar.dashboards.label }}: {{ $.Values.sidecar.dashboards.labelValue | quote }} - {{- end }} -{{- if $dashboards }} -data: -{{- $dashboardFound := false }} -{{- range $key, $value := $dashboards }} -{{- if (or (hasKey $value "json") (hasKey $value "file")) }} -{{- $dashboardFound = true }} - {{- print $key | nindent 2 }}.json: - {{- if hasKey $value "json" }} - |- - {{- $value.json | nindent 6 }} - {{- end }} - {{- if hasKey $value "file" }} - {{- toYaml ( $files.Get $value.file ) | nindent 4}} - {{- end }} -{{- end }} -{{- end }} -{{- if not $dashboardFound }} - {} -{{- end }} -{{- end }} ---- -{{- end }} - -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/deployment.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/deployment.yaml deleted file mode 100644 index 46c016f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/deployment.yaml +++ /dev/null @@ -1,53 +0,0 @@ -{{- if (and (not .Values.useStatefulSet) (or (not .Values.persistence.enabled) (eq .Values.persistence.type "pvc"))) }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "grafana.fullname" . }} - namespace: {{ include "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.labels }} - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - {{- if and (not .Values.autoscaling.enabled) (.Values.replicas) }} - replicas: {{ .Values.replicas }} - {{- end }} - revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 6 }} - {{- with .Values.deploymentStrategy }} - strategy: - {{- toYaml . | trim | nindent 4 }} - {{- end }} - template: - metadata: - labels: - {{- include "grafana.selectorLabels" . | nindent 8 }} - {{- with .Values.podLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - annotations: - checksum/config: {{ include "grafana.configData" . | sha256sum }} - {{- if .Values.dashboards }} - checksum/dashboards-json-config: {{ include (print $.Template.BasePath "/dashboards-json-configmap.yaml") . | sha256sum }} - {{- end }} - checksum/sc-dashboard-provider-config: {{ include "grafana.configDashboardProviderData" . | sha256sum }} - {{- if and (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))) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }} - checksum/secret: {{ include "grafana.secretsData" . | sha256sum }} - {{- end }} - {{- if .Values.envRenderSecret }} - checksum/secret-env: {{ tpl (toYaml .Values.envRenderSecret) . | sha256sum }} - {{- end }} - kubectl.kubernetes.io/default-container: {{ .Chart.Name }} - {{- with .Values.podAnnotations }} - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - {{- include "grafana.pod" . | nindent 6 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/extra-manifests.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/extra-manifests.yaml deleted file mode 100644 index a9bb3b6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/extra-manifests.yaml +++ /dev/null @@ -1,4 +0,0 @@ -{{ range .Values.extraObjects }} ---- -{{ tpl (toYaml .) $ }} -{{ end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/headless-service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/headless-service.yaml deleted file mode 100644 index 3028589..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/headless-service.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- $sts := list "sts" "StatefulSet" "statefulset" -}} -{{- if or .Values.headlessService (and .Values.persistence.enabled (not .Values.persistence.existingClaim) (has .Values.persistence.type $sts)) }} -apiVersion: v1 -kind: Service -metadata: - name: {{ include "grafana.fullname" . }}-headless - namespace: {{ include "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - clusterIP: None - selector: - {{- include "grafana.selectorLabels" . | nindent 4 }} - type: ClusterIP - ports: - - name: {{ .Values.gossipPortName }}-tcp - port: 9094 -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/hpa.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/hpa.yaml deleted file mode 100644 index 46bbcb4..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/hpa.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- $sts := list "sts" "StatefulSet" "statefulset" -}} -{{- if .Values.autoscaling.enabled }} -apiVersion: {{ include "grafana.hpa.apiVersion" . }} -kind: HorizontalPodAutoscaler -metadata: - name: {{ include "grafana.fullname" . }} - namespace: {{ include "grafana.namespace" . }} - labels: - app.kubernetes.io/name: {{ include "grafana.name" . }} - helm.sh/chart: {{ include "grafana.chart" . }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - {{- if has .Values.persistence.type $sts }} - kind: StatefulSet - {{- else }} - kind: Deployment - {{- end }} - name: {{ include "grafana.fullname" . }} - minReplicas: {{ .Values.autoscaling.minReplicas }} - maxReplicas: {{ .Values.autoscaling.maxReplicas }} - metrics: - {{- if .Values.autoscaling.targetMemory }} - - type: Resource - resource: - name: memory - {{- if eq (include "grafana.hpa.apiVersion" .) "autoscaling/v2beta1" }} - targetAverageUtilization: {{ .Values.autoscaling.targetMemory }} - {{- else }} - target: - type: Utilization - averageUtilization: {{ .Values.autoscaling.targetMemory }} - {{- end }} - {{- end }} - {{- if .Values.autoscaling.targetCPU }} - - type: Resource - resource: - name: cpu - {{- if eq (include "grafana.hpa.apiVersion" .) "autoscaling/v2beta1" }} - targetAverageUtilization: {{ .Values.autoscaling.targetCPU }} - {{- else }} - target: - type: Utilization - averageUtilization: {{ .Values.autoscaling.targetCPU }} - {{- end }} - {{- end }} - {{- if .Values.autoscaling.behavior }} - behavior: {{ toYaml .Values.autoscaling.behavior | nindent 4 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-deployment.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-deployment.yaml deleted file mode 100644 index 28231b8..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-deployment.yaml +++ /dev/null @@ -1,131 +0,0 @@ -{{ if .Values.imageRenderer.enabled }} -{{- $root := . -}} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "grafana.fullname" . }}-image-renderer - namespace: {{ include "grafana.namespace" . }} - labels: - {{- include "grafana.imageRenderer.labels" . | nindent 4 }} - {{- with .Values.imageRenderer.labels }} - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.imageRenderer.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - {{- if and (not .Values.imageRenderer.autoscaling.enabled) (.Values.imageRenderer.replicas) }} - replicas: {{ .Values.imageRenderer.replicas }} - {{- end }} - revisionHistoryLimit: {{ .Values.imageRenderer.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }} - - {{- with .Values.imageRenderer.deploymentStrategy }} - strategy: - {{- toYaml . | trim | nindent 4 }} - {{- end }} - template: - metadata: - labels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 8 }} - {{- with .Values.imageRenderer.podLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - annotations: - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} - {{- with .Values.imageRenderer.podAnnotations }} - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - {{- with .Values.imageRenderer.schedulerName }} - schedulerName: "{{ . }}" - {{- end }} - {{- with .Values.imageRenderer.serviceAccountName }} - serviceAccountName: "{{ . }}" - {{- end }} - {{- with .Values.imageRenderer.securityContext }} - securityContext: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.imageRenderer.hostAliases }} - hostAliases: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.imageRenderer.priorityClassName }} - priorityClassName: {{ . }} - {{- end }} - {{- with .Values.imageRenderer.image.pullSecrets }} - imagePullSecrets: - {{- range . }} - - name: {{ tpl . $root }} - {{- end}} - {{- end }} - containers: - - name: {{ .Chart.Name }}-image-renderer - {{- $registry := include "system_default_registry" | default .Values.imageRenderer.image.registry -}} - {{- if .Values.imageRenderer.image.sha }} - image: "{{ $registry }}{{ .Values.imageRenderer.image.repository }}:{{ .Values.imageRenderer.image.tag }}@sha256:{{ .Values.imageRenderer.image.sha }}" - {{- else }} - image: "{{ $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.targetPort }} - protocol: TCP - livenessProbe: - httpGet: - path: / - port: {{ .Values.imageRenderer.service.portName }} - env: - - name: HTTP_PORT - value: {{ .Values.imageRenderer.service.targetPort | quote }} - {{- if .Values.imageRenderer.serviceMonitor.enabled }} - - name: ENABLE_METRICS - value: "true" - {{- end }} - {{- range $key, $value := .Values.imageRenderer.envValueFrom }} - - name: {{ $key | quote }} - valueFrom: - {{- tpl (toYaml $value) $ | nindent 16 }} - {{- end }} - {{- range $key, $value := .Values.imageRenderer.env }} - - name: {{ $key | quote }} - value: {{ $value | quote }} - {{- end }} - {{- with .Values.imageRenderer.containerSecurityContext }} - securityContext: - {{- toYaml . | nindent 12 }} - {{- end }} - volumeMounts: - - mountPath: /tmp - name: image-renderer-tmpfs - {{- with .Values.imageRenderer.resources }} - resources: - {{- toYaml . | nindent 12 }} - {{- end }} - {{- with .Values.imageRenderer.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.imageRenderer.affinity }} - affinity: - {{- tpl (toYaml .) $root | nindent 8 }} - {{- end }} - {{- with .Values.imageRenderer.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - volumes: - - name: image-renderer-tmpfs - emptyDir: {} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-hpa.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-hpa.yaml deleted file mode 100644 index b0f0059..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-hpa.yaml +++ /dev/null @@ -1,47 +0,0 @@ -{{- if and .Values.imageRenderer.enabled .Values.imageRenderer.autoscaling.enabled }} -apiVersion: {{ include "grafana.hpa.apiVersion" . }} -kind: HorizontalPodAutoscaler -metadata: - name: {{ include "grafana.fullname" . }}-image-renderer - namespace: {{ include "grafana.namespace" . }} - labels: - app.kubernetes.io/name: {{ include "grafana.name" . }}-image-renderer - helm.sh/chart: {{ include "grafana.chart" . }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ include "grafana.fullname" . }}-image-renderer - minReplicas: {{ .Values.imageRenderer.autoscaling.minReplicas }} - maxReplicas: {{ .Values.imageRenderer.autoscaling.maxReplicas }} - metrics: - {{- if .Values.imageRenderer.autoscaling.targetMemory }} - - type: Resource - resource: - name: memory - {{- if eq (include "grafana.hpa.apiVersion" .) "autoscaling/v2beta1" }} - targetAverageUtilization: {{ .Values.imageRenderer.autoscaling.targetMemory }} - {{- else }} - target: - type: Utilization - averageUtilization: {{ .Values.imageRenderer.autoscaling.targetMemory }} - {{- end }} - {{- end }} - {{- if .Values.imageRenderer.autoscaling.targetCPU }} - - type: Resource - resource: - name: cpu - {{- if eq (include "grafana.hpa.apiVersion" .) "autoscaling/v2beta1" }} - targetAverageUtilization: {{ .Values.imageRenderer.autoscaling.targetCPU }} - {{- else }} - target: - type: Utilization - averageUtilization: {{ .Values.imageRenderer.autoscaling.targetCPU }} - {{- end }} - {{- end }} - {{- if .Values.imageRenderer.autoscaling.behavior }} - behavior: {{ toYaml .Values.imageRenderer.autoscaling.behavior | nindent 4 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-network-policy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-network-policy.yaml deleted file mode 100644 index d1a0eb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-network-policy.yaml +++ /dev/null @@ -1,79 +0,0 @@ -{{- if and .Values.imageRenderer.enabled .Values.imageRenderer.networkPolicy.limitIngress }} ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: {{ include "grafana.fullname" . }}-image-renderer-ingress - namespace: {{ include "grafana.namespace" . }} - annotations: - comment: Limit image-renderer ingress traffic from grafana -spec: - podSelector: - matchLabels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }} - {{- with .Values.imageRenderer.podLabels }} - {{- toYaml . | nindent 6 }} - {{- end }} - - policyTypes: - - Ingress - ingress: - - ports: - - port: {{ .Values.imageRenderer.service.targetPort }} - protocol: TCP - from: - - namespaceSelector: - matchLabels: - kubernetes.io/metadata.name: {{ include "grafana.namespace" . }} - podSelector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 14 }} - {{- with .Values.podLabels }} - {{- toYaml . | nindent 14 }} - {{- end }} - {{- with .Values.imageRenderer.networkPolicy.extraIngressSelectors -}} - {{ toYaml . | nindent 8 }} - {{- end }} -{{- end }} - -{{- if and .Values.imageRenderer.enabled .Values.imageRenderer.networkPolicy.limitEgress }} ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: {{ include "grafana.fullname" . }}-image-renderer-egress - namespace: {{ include "grafana.namespace" . }} - annotations: - comment: Limit image-renderer egress traffic to grafana -spec: - podSelector: - matchLabels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }} - {{- with .Values.imageRenderer.podLabels }} - {{- toYaml . | 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.targetPort }} - protocol: TCP - to: - - namespaceSelector: - matchLabels: - name: {{ include "grafana.namespace" . }} - podSelector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 14 }} - {{- with .Values.podLabels }} - {{- toYaml . | nindent 14 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-service.yaml deleted file mode 100644 index f8da127..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-service.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- if and .Values.imageRenderer.enabled .Values.imageRenderer.service.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ include "grafana.fullname" . }}-image-renderer - namespace: {{ include "grafana.namespace" . }} - labels: - {{- include "grafana.imageRenderer.labels" . | nindent 4 }} - {{- with .Values.imageRenderer.service.labels }} - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.imageRenderer.service.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - type: ClusterIP - {{- with .Values.imageRenderer.service.clusterIP }} - clusterIP: {{ . }} - {{- end }} - ports: - - name: {{ .Values.imageRenderer.service.portName }} - port: {{ .Values.imageRenderer.service.port }} - protocol: TCP - targetPort: {{ .Values.imageRenderer.service.targetPort }} - {{- with .Values.imageRenderer.appProtocol }} - appProtocol: {{ . }} - {{- end }} - selector: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 4 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-servicemonitor.yaml deleted file mode 100644 index 5d9f09d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/image-renderer-servicemonitor.yaml +++ /dev/null @@ -1,48 +0,0 @@ -{{- if .Values.imageRenderer.serviceMonitor.enabled }} ---- -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ include "grafana.fullname" . }}-image-renderer - {{- if .Values.imageRenderer.serviceMonitor.namespace }} - namespace: {{ tpl .Values.imageRenderer.serviceMonitor.namespace . }} - {{- else }} - namespace: {{ include "grafana.namespace" . }} - {{- end }} - labels: - {{- include "grafana.imageRenderer.labels" . | nindent 4 }} - {{- with .Values.imageRenderer.serviceMonitor.labels }} - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - endpoints: - - port: {{ .Values.imageRenderer.service.portName }} - {{- with .Values.imageRenderer.serviceMonitor.interval }} - interval: {{ . }} - {{- end }} - {{- with .Values.imageRenderer.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ . }} - {{- end }} - honorLabels: true - path: {{ .Values.imageRenderer.serviceMonitor.path }} - scheme: {{ .Values.imageRenderer.serviceMonitor.scheme }} - {{- with .Values.imageRenderer.serviceMonitor.tlsConfig }} - tlsConfig: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.imageRenderer.serviceMonitor.relabelings }} - relabelings: - {{- toYaml . | nindent 6 }} - {{- end }} - jobLabel: "{{ .Release.Name }}-image-renderer" - selector: - matchLabels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }} - namespaceSelector: - matchNames: - - {{ include "grafana.namespace" . }} - {{- with .Values.imageRenderer.serviceMonitor.targetLabels }} - targetLabels: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/ingress.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/ingress.yaml deleted file mode 100644 index b2ffd81..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/ingress.yaml +++ /dev/null @@ -1,78 +0,0 @@ -{{- if .Values.ingress.enabled -}} -{{- $ingressApiIsStable := eq (include "grafana.ingress.isStable" .) "true" -}} -{{- $ingressSupportsIngressClassName := eq (include "grafana.ingress.supportsIngressClassName" .) "true" -}} -{{- $ingressSupportsPathType := eq (include "grafana.ingress.supportsPathType" .) "true" -}} -{{- $fullName := include "grafana.fullname" . -}} -{{- $servicePort := .Values.service.port -}} -{{- $ingressPath := .Values.ingress.path -}} -{{- $ingressPathType := .Values.ingress.pathType -}} -{{- $extraPaths := .Values.ingress.extraPaths -}} -apiVersion: {{ include "grafana.ingress.apiVersion" . }} -kind: Ingress -metadata: - name: {{ $fullName }} - namespace: {{ include "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.ingress.labels }} - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.ingress.annotations }} - annotations: - {{- range $key, $value := . }} - {{ $key }}: {{ tpl $value $ | quote }} - {{- end }} - {{- end }} -spec: - {{- if and $ingressSupportsIngressClassName .Values.ingress.ingressClassName }} - ingressClassName: {{ .Values.ingress.ingressClassName }} - {{- end -}} - {{- with .Values.ingress.tls }} - tls: - {{- tpl (toYaml .) $ | nindent 4 }} - {{- end }} - rules: - {{- if .Values.ingress.hosts }} - {{- range .Values.ingress.hosts }} - - host: {{ tpl . $ | quote }} - http: - paths: - {{- with $extraPaths }} - {{- toYaml . | nindent 10 }} - {{- end }} - - path: {{ $ingressPath }} - {{- if $ingressSupportsPathType }} - pathType: {{ $ingressPathType }} - {{- end }} - backend: - {{- if $ingressApiIsStable }} - service: - name: {{ $fullName }} - port: - number: {{ $servicePort }} - {{- else }} - serviceName: {{ $fullName }} - servicePort: {{ $servicePort }} - {{- end }} - {{- end }} - {{- else }} - - http: - paths: - - backend: - {{- if $ingressApiIsStable }} - service: - name: {{ $fullName }} - port: - number: {{ $servicePort }} - {{- else }} - serviceName: {{ $fullName }} - servicePort: {{ $servicePort }} - {{- end }} - {{- with $ingressPath }} - path: {{ . }} - {{- end }} - {{- if $ingressSupportsPathType }} - pathType: {{ $ingressPathType }} - {{- end }} - {{- end -}} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/networkpolicy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/networkpolicy.yaml deleted file mode 100644 index 4cd3ed6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/networkpolicy.yaml +++ /dev/null @@ -1,61 +0,0 @@ -{{- if .Values.networkPolicy.enabled }} -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: {{ include "grafana.fullname" . }} - namespace: {{ include "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.labels }} - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - policyTypes: - {{- if .Values.networkPolicy.ingress }} - - Ingress - {{- end }} - {{- if .Values.networkPolicy.egress.enabled }} - - Egress - {{- end }} - podSelector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 6 }} - - {{- if .Values.networkPolicy.egress.enabled }} - egress: - {{- if not .Values.networkPolicy.egress.blockDNSResolution }} - - ports: - - port: 53 - protocol: UDP - {{- end }} - - ports: - {{ .Values.networkPolicy.egress.ports | toJson }} - {{- with .Values.networkPolicy.egress.to }} - to: - {{- toYaml . | nindent 12 }} - {{- end }} - {{- end }} - {{- if .Values.networkPolicy.ingress }} - ingress: - - ports: - - port: {{ .Values.service.targetPort }} - {{- if not .Values.networkPolicy.allowExternal }} - from: - - podSelector: - matchLabels: - {{ include "grafana.fullname" . }}-client: "true" - {{- with .Values.networkPolicy.explicitNamespacesSelector }} - - namespaceSelector: - {{- toYaml . | nindent 12 }} - {{- end }} - - podSelector: - matchLabels: - {{- include "grafana.labels" . | nindent 14 }} - role: read - {{- end }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/nginx-config.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/nginx-config.yaml deleted file mode 100644 index 557471f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/nginx-config.yaml +++ /dev/null @@ -1,94 +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; - - map $http_upgrade $connection_upgrade { - default upgrade; - '' close; - } - - 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; - } - - location /api/live/ { - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - proxy_set_header Host $http_host; - proxy_pass http://localhost:3000; - } - - 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_once off; - - {{- if eq .Values.global.cattle.clusterId "local" -}} - sub_filter '"appSubUrl":""' '"appSubUrl":"/api/v1/namespaces/{{ template "grafana.namespace" . }}/services/http:{{ template "grafana.fullname" . }}:{{ .Values.service.port }}/proxy"'; - {{- else -}} - sub_filter '"appSubUrl":""' '"appSubUrl":"/k8s/clusters/{{ .Values.global.cattle.clusterId }}/api/v1/namespaces/{{ template "grafana.namespace" . }}/services/http:{{ template "grafana.fullname" . }}:{{ .Values.service.port }}/proxy"'; - {{- end -}} - - sub_filter ':"/avatar/' ':"avatar/'; - - if ($request_filename ~ .*\.(?:js|css|jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm)$) { - expires 90d; - } - - rewrite ^/k8s/clusters/.*/proxy(.*) /$1 break; - - } - } - } diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/poddisruptionbudget.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/poddisruptionbudget.yaml deleted file mode 100644 index 0525121..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/poddisruptionbudget.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if .Values.podDisruptionBudget }} -apiVersion: {{ include "grafana.podDisruptionBudget.apiVersion" . }} -kind: PodDisruptionBudget -metadata: - name: {{ include "grafana.fullname" . }} - namespace: {{ include "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.labels }} - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - {{- with .Values.podDisruptionBudget.minAvailable }} - minAvailable: {{ . }} - {{- end }} - {{- with .Values.podDisruptionBudget.maxUnavailable }} - maxUnavailable: {{ . }} - {{- end }} - selector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 6 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/podsecuritypolicy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/podsecuritypolicy.yaml deleted file mode 100644 index 973cacc..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/podsecuritypolicy.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- if and (or .Values.global.cattle.psp.enabled .Values.rbac.pspEnabled) (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ include "grafana.fullname" . }} - 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, with DAC_OVERRIDE and CHOWN - - ALL - volumes: - - 'configMap' - - 'emptyDir' - - 'projected' - - 'csi' - - 'secret' - - 'downwardAPI' - - 'persistentVolumeClaim' - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/pvc.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/pvc.yaml deleted file mode 100644 index c9b2343..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/pvc.yaml +++ /dev/null @@ -1,41 +0,0 @@ -{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) (eq .Values.persistence.type "pvc")}} -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: {{ include "grafana.fullname" . }} - namespace: {{ include "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.persistence.extraPvcLabels }} - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.persistence.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.persistence.finalizers }} - finalizers: - {{- toYaml . | nindent 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: {{ .Values.persistence.size | quote }} - {{- if (lookup "v1" "PersistentVolumeClaim" (include "grafana.namespace" .) (include "grafana.fullname" .)) }} - volumeName: {{ (lookup "v1" "PersistentVolumeClaim" (include "grafana.namespace" .) (include "grafana.fullname" .)).spec.volumeName }} - {{- end }} - {{- with .Values.persistence.storageClassName }} - storageClassName: {{ . }} - {{- end }} - {{- with .Values.persistence.selectorLabels }} - selector: - matchLabels: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/role.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/role.yaml deleted file mode 100644 index 469b6f4..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/role.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if and .Values.rbac.create (not .Values.rbac.useExistingRole) -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ include "grafana.fullname" . }} - namespace: {{ include "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- if or (or .Values.global.cattle.psp.enabled .Values.rbac.pspEnabled) (and .Values.rbac.namespaced (or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled .Values.sidecar.plugins.enabled .Values.rbac.extraRoleRules)) }} -rules: - {{- if and (or .Values.global.cattle.psp.enabled .Values.rbac.pspEnabled) (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} - - apiGroups: ['extensions'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: [{{ include "grafana.fullname" . }}] - {{- end }} - {{- if and .Values.rbac.namespaced (or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled .Values.sidecar.plugins.enabled) }} - - apiGroups: [""] # "" indicates the core API group - resources: ["configmaps", "secrets"] - verbs: ["get", "watch", "list"] - {{- end }} - {{- with .Values.rbac.extraRoleRules }} - {{- toYaml . | nindent 2 }} - {{- end}} -{{- else }} -rules: [] -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/rolebinding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/rolebinding.yaml deleted file mode 100644 index 58f77c6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/rolebinding.yaml +++ /dev/null @@ -1,25 +0,0 @@ -{{- if .Values.rbac.create }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ include "grafana.fullname" . }} - namespace: {{ include "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - {{- if .Values.rbac.useExistingRole }} - name: {{ .Values.rbac.useExistingRole }} - {{- else }} - name: {{ include "grafana.fullname" . }} - {{- end }} -subjects: -- kind: ServiceAccount - name: {{ include "grafana.serviceAccountName" . }} - namespace: {{ include "grafana.namespace" . }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/secret-env.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/secret-env.yaml deleted file mode 100644 index eb14aac..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/secret-env.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if .Values.envRenderSecret }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ include "grafana.fullname" . }}-env - namespace: {{ include "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -type: Opaque -data: -{{- range $key, $val := .Values.envRenderSecret }} - {{ $key }}: {{ tpl ($val | toString) $ | b64enc | quote }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/secret.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/secret.yaml deleted file mode 100644 index fd2ca50..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/secret.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret)) }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ include "grafana.fullname" . }} - namespace: {{ include "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -type: Opaque -data: - {{- include "grafana.secretsData" . | nindent 2 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/service.yaml deleted file mode 100644 index e9396a1..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/service.yaml +++ /dev/null @@ -1,61 +0,0 @@ -{{- if .Values.service.enabled }} -{{- $root := . }} -apiVersion: v1 -kind: Service -metadata: - name: {{ include "grafana.fullname" . }} - namespace: {{ include "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.service.labels }} - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.service.annotations }} - annotations: - {{- tpl (toYaml . | nindent 4) $root }} - {{- end }} -spec: - {{- if (or (eq .Values.service.type "ClusterIP") (empty .Values.service.type)) }} - type: ClusterIP - {{- with .Values.service.clusterIP }} - clusterIP: {{ . }} - {{- end }} - {{- else if eq .Values.service.type "LoadBalancer" }} - type: LoadBalancer - {{- with .Values.service.loadBalancerIP }} - loadBalancerIP: {{ . }} - {{- end }} - {{- with .Values.service.loadBalancerClass }} - loadBalancerClass: {{ . }} - {{- end }} - {{- with .Values.service.loadBalancerSourceRanges }} - loadBalancerSourceRanges: - {{- toYaml . | nindent 4 }} - {{- end }} - {{- else }} - type: {{ .Values.service.type }} - {{- end }} - {{- with .Values.service.externalIPs }} - externalIPs: - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.service.externalTrafficPolicy }} - externalTrafficPolicy: {{ . }} - {{- end }} - ports: - - name: {{ .Values.service.portName }} - port: {{ .Values.service.port }} - protocol: TCP - targetPort: {{ .Values.service.targetPort }} - {{- with .Values.service.appProtocol }} - appProtocol: {{ . }} - {{- end }} - {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }} - nodePort: {{ .Values.service.nodePort }} - {{- end }} - {{- with .Values.extraExposePorts }} - {{- tpl (toYaml . | nindent 4) $root }} - {{- end }} - selector: - {{- include "grafana.selectorLabels" . | nindent 4 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/serviceaccount.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/serviceaccount.yaml deleted file mode 100644 index ffca071..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/serviceaccount.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -automountServiceAccountToken: {{ .Values.serviceAccount.autoMount | default .Values.serviceAccount.automountServiceAccountToken }} -metadata: - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.serviceAccount.labels }} - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.serviceAccount.annotations }} - annotations: - {{- tpl (toYaml . | nindent 4) $ }} - {{- end }} - name: {{ include "grafana.serviceAccountName" . }} - namespace: {{ include "grafana.namespace" . }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/servicemonitor.yaml deleted file mode 100644 index b321b12..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/servicemonitor.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- if .Values.serviceMonitor.enabled }} ---- -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ include "grafana.fullname" . }} - {{- if .Values.serviceMonitor.namespace }} - namespace: {{ tpl .Values.serviceMonitor.namespace . }} - {{- else }} - namespace: {{ include "grafana.namespace" . }} - {{- end }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.serviceMonitor.labels }} - {{- tpl (toYaml . | nindent 4) $ }} - {{- end }} -spec: - endpoints: - - port: {{ .Values.service.portName }} - {{- with .Values.serviceMonitor.interval }} - interval: {{ . }} - {{- end }} - {{- with .Values.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ . }} - {{- end }} - honorLabels: true - path: {{ .Values.serviceMonitor.path }} - scheme: {{ .Values.serviceMonitor.scheme }} - {{- with .Values.serviceMonitor.tlsConfig }} - tlsConfig: - {{- toYaml . | nindent 6 }} - {{- end }} - metricRelabelings: - {{- if .Values.serviceMonitor.metricRelabelings }} - {{- toYaml .Values.serviceMonitor.metricRelabelings | nindent 6 }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName }} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} - {{- if .Values.serviceMonitor.relabelings }} - {{- with .Values.serviceMonitor.relabelings }} - relabelings: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - {{- with .Values.serviceMonitor.metricRelabelings }} - metricRelabelings: - {{- toYaml . | nindent 6 }} - {{- end }} - jobLabel: "{{ .Release.Name }}" - selector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 6 }} - namespaceSelector: - matchNames: - - {{ include "grafana.namespace" . }} - {{- with .Values.serviceMonitor.targetLabels }} - targetLabels: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/statefulset.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/statefulset.yaml deleted file mode 100644 index 4927808..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/statefulset.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- $sts := list "sts" "StatefulSet" "statefulset" -}} -{{- if (or (.Values.useStatefulSet) (and .Values.persistence.enabled (not .Values.persistence.existingClaim) (has .Values.persistence.type $sts)))}} -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ include "grafana.fullname" . }} - namespace: {{ include "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - replicas: {{ .Values.replicas }} - selector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 6 }} - serviceName: {{ include "grafana.fullname" . }}-headless - template: - metadata: - labels: - {{- include "grafana.selectorLabels" . | nindent 8 }} - {{- with .Values.podLabels }} - {{- toYaml . | nindent 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 and (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))) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }} - checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }} - {{- end }} - kubectl.kubernetes.io/default-container: {{ .Chart.Name }} - {{- with .Values.podAnnotations }} - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - {{- include "grafana.pod" . | nindent 6 }} - {{- if .Values.persistence.enabled}} - 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 . | nindent 10 }} - {{- end }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-configmap.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-configmap.yaml deleted file mode 100644 index 01c96c9..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-configmap.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if .Values.testFramework.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "grafana.fullname" . }}-test - namespace: {{ include "grafana.namespace" . }} - annotations: - "helm.sh/hook": test-success - "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded" - labels: - {{- include "grafana.labels" . | nindent 4 }} -data: - run.sh: |- - @test "Test Health" { - url="http://{{ include "grafana.fullname" . }}/api/health" - - code=$(wget --server-response --spider --timeout 90 --tries 10 ${url} 2>&1 | awk '/^ HTTP/{print $2}') - [ "$code" == "200" ] - } -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-podsecuritypolicy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-podsecuritypolicy.yaml deleted file mode 100644 index 70a0a88..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-podsecuritypolicy.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if and (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") .Values.testFramework.enabled (or .Values.global.cattle.psp.enabled .Values.rbac.pspEnabled) }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ include "grafana.fullname" . }}-test - annotations: - "helm.sh/hook": test-success - "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded" - 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-role.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-role.yaml deleted file mode 100644 index 976418b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-role.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if and (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") .Values.testFramework.enabled (or .Values.global.cattle.psp.enabled .Values.rbac.pspEnabled) }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ include "grafana.fullname" . }}-test - namespace: {{ include "grafana.namespace" . }} - annotations: - "helm.sh/hook": test-success - "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded" - labels: - {{- include "grafana.labels" . | nindent 4 }} -rules: - - apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: [{{ include "grafana.fullname" . }}-test] -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-rolebinding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-rolebinding.yaml deleted file mode 100644 index 509566e..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-rolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") .Values.testFramework.enabled (or .Values.global.cattle.psp.enabled .Values.rbac.pspEnabled) }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ include "grafana.fullname" . }}-test - namespace: {{ include "grafana.namespace" . }} - annotations: - "helm.sh/hook": test-success - "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded" - labels: - {{- include "grafana.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ include "grafana.fullname" . }}-test -subjects: - - kind: ServiceAccount - name: {{ include "grafana.serviceAccountNameTest" . }} - namespace: {{ include "grafana.namespace" . }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-serviceaccount.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-serviceaccount.yaml deleted file mode 100644 index 38fba35..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test-serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if and .Values.testFramework.enabled .Values.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - {{- include "grafana.labels" . | nindent 4 }} - name: {{ include "grafana.serviceAccountNameTest" . }} - namespace: {{ include "grafana.namespace" . }} - annotations: - "helm.sh/hook": test-success - "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded" -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test.yaml deleted file mode 100644 index 83aaa18..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/templates/tests/test.yaml +++ /dev/null @@ -1,53 +0,0 @@ -{{- if .Values.testFramework.enabled }} -{{- $root := . }} -apiVersion: v1 -kind: Pod -metadata: - name: {{ include "grafana.fullname" . }}-test - labels: - {{- include "grafana.labels" . | nindent 4 }} - annotations: - "helm.sh/hook": test-success - "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded" - namespace: {{ include "grafana.namespace" . }} -spec: - serviceAccountName: {{ include "grafana.serviceAccountNameTest" . }} - {{- with .Values.testFramework.securityContext }} - securityContext: - {{- toYaml . | nindent 4 }} - {{- end }} - {{- if or .Values.image.pullSecrets .Values.global.imagePullSecrets }} - imagePullSecrets: - {{- include "grafana.imagePullSecrets" (dict "root" $root "imagePullSecrets" .Values.image.pullSecrets) | nindent 4 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- tpl (toYaml .) $root | nindent 4 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 4 }} - {{- end }} - containers: - - name: {{ .Release.Name }}-test - image: "{{ template "system_default_registry" . | default .Values.testFramework.image.registry }}/{{ .Values.testFramework.image.repository }}:{{ .Values.testFramework.image.tag }}" - imagePullPolicy: "{{ .Values.testFramework.imagePullPolicy}}" - command: ["/opt/bats/bin/bats", "-t", "/tests/run.sh"] - volumeMounts: - - mountPath: /tests - name: tests - readOnly: true - {{- with .Values.testFramework.resources }} - resources: - {{- toYaml . | nindent 8 }} - {{- end }} - volumes: - - name: tests - configMap: - name: {{ include "grafana.fullname" . }}-test - restartPolicy: Never -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/values.yaml deleted file mode 100644 index 45e3df9..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/grafana/values.yaml +++ /dev/null @@ -1,1315 +0,0 @@ -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - - # To help compatibility with other charts which use global.imagePullSecrets. - # Allow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style). - # Can be tempalted. - # global: - # imagePullSecrets: - # - name: pullSecret1 - # - name: pullSecret2 - # or - # global: - # imagePullSecrets: - # - pullSecret1 - # - pullSecret2 - imagePullSecrets: [] - -rbac: - create: true - ## Use an existing ClusterRole/Role (depending on rbac.namespaced false/true) - # useExistingRole: name-of-some-role - # useExistingClusterRole: name-of-some-clusterRole - pspEnabled: false - pspUseAppArmor: false - namespaced: false - extraRoleRules: [] - # - apiGroups: [] - # resources: [] - # verbs: [] - extraClusterRoleRules: [] - # - apiGroups: [] - # resources: [] - # verbs: [] -serviceAccount: - create: true - name: - nameTest: - ## ServiceAccount labels. - labels: {} - ## Service account annotations. Can be templated. - # annotations: - # eks.amazonaws.com/role-arn: arn:aws:iam::123456789000:role/iam-role-name-here - - ## autoMount is deprecated in favor of automountServiceAccountToken - # autoMount: false - automountServiceAccountToken: true - -replicas: 1 - -## Create a headless service for the deployment -headlessService: false - -## Should the service account be auto mounted on the pod -automountServiceAccountToken: true - -## Create HorizontalPodAutoscaler object for deployment type -# -autoscaling: - enabled: false - minReplicas: 1 - maxReplicas: 5 - targetCPU: "60" - targetMemory: "" - behavior: {} - -## See `kubectl explain poddisruptionbudget.spec` for more -## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ -podDisruptionBudget: {} -# apiVersion: "" -# 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 - # Overrides the Grafana image tag whose default is the chart appVersion - tag: 10.4.9 - 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/ - ## Can be templated. - ## - pullSecrets: [] - # - myRegistrKeySecretName - -testFramework: - enabled: false - imagePullPolicy: IfNotPresent - securityContext: - runAsNonRoot: true - runAsUser: 1000 - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -# dns configuration for pod -dnsPolicy: ~ -dnsConfig: {} - # nameservers: - # - 8.8.8.8 - # options: - # - name: ndots - # value: "2" - # - name: edns0 - -securityContext: - runAsNonRoot: true - runAsUser: 472 - runAsGroup: 472 - fsGroup: 472 - -containerSecurityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - seccompProfile: - type: RuntimeDefault - -# Enable creating the grafana configmap -createConfigmap: true - -# Extra configmaps to mount in grafana pods -# Values are templated. -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.85.0 - sha: "" - pullPolicy: IfNotPresent - -downloadDashboards: - env: {} - envFromSecret: "" - resources: {} - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - seccompProfile: - type: RuntimeDefault - envValueFrom: {} - # ENV_NAME: - # configMapKeyRef: - # name: configmap-name - # key: value_key - -## Pod Annotations -# podAnnotations: {} - -## Pod Labels -# podLabels: {} - -podPortName: grafana -gossipPortName: gossip -## 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: - enabled: true - type: ClusterIP - loadBalancerIP: "" - loadBalancerClass: "" - loadBalancerSourceRanges: [] - port: 80 - targetPort: 3000 - # targetPort: 4181 To be used with a proxy extraContainer - ## Service annotations. Can be templated. - annotations: {} - labels: {} - portName: service - # Adds the appProtocol field to the service. This allows to work with istio protocol selection. Ex: "http" or "tcp" - appProtocol: "" - -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: 30s - scheme: http - tlsConfig: {} - scrapeTimeout: 30s - relabelings: [] - metricRelabelings: [] - targetLabels: [] - -extraExposePorts: [] - # - name: keycloak - # port: 8080 - # targetPort: 8080 - -# 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.1= - 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: use-annotation - - - 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 (evaluated as template) -## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity -## -affinity: {} - -## Topology Spread Constraints -## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ -## -topologySpreadConstraints: [] - -## Additional init containers (evaluated as template) -## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ -## -extraInitContainers: [] - -## Enable an Specify container in extraContainers. This is meant to allow adding an authentication proxy to a grafana pod -extraContainers: "" -# 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: {} - ## Sub-directory of the PV to mount. Can be templated. - # subPath: "" - ## Name of an existing PVC. Can be templated. - # existingClaim: - ## Extra labels to apply to a PVC. - extraPvcLabels: {} - - ## 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 grafana-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 - securityContext: - runAsNonRoot: false - runAsUser: 0 - seccompProfile: - type: RuntimeDefault - capabilities: - add: - - CHOWN - -# Administrator credentials when not using an existing secret (see below) -adminUser: admin -# adminPassword: strongpassword - -# Use an existing secret for the admin user. -admin: - ## Name of the secret. Can be templated. - 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" - -## Optionally define args if command is used -## Needed if using `hashicorp/envconsul` to manage secrets -## By default no arguments are set -# args: -# - "-secret" -# - "secret/grafana" -# - "./grafana" - -## 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. Name is templated. -## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core -## Renders in container spec as: -## env: -## ... -## - name: -## valueFrom: -## -envValueFrom: {} - # ENV_NAME: - # configMapKeyRef: - # name: configmap-name - # key: value_key - -## 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. -## If the secret values contains "{{", they'll need to be properly escaped so that they are not interpreted by Helm -## ref: https://helm.sh/docs/howto/charts_tips_and_tricks/#using-the-tpl-function -envRenderSecret: {} - -## The names of secrets in the same kubernetes namespace which contain values to be added to the environment -## Each entry should contain a name key, and can optionally specify whether the secret must be defined with an optional key. -## Name is templated. -envFromSecrets: [] -## - name: secret-name -## prefix: prefix -## optional: true - -## The names of conifgmaps in the same kubernetes namespace which contain values to be added to the environment -## Each entry should contain a name key, and can optionally specify whether the configmap must be defined with an optional key. -## Name is templated. -## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#configmapenvsource-v1-core -envFromConfigMaps: [] -## - name: configmap-name -## prefix: prefix -## optional: true - -# Inject Kubernetes services as environment variables. -# See https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/#environment-variables -enableServiceLinks: true - -## 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-0 - # mountPath: /mnt/volume0 - # readOnly: true - # - name: extra-volume-1 - # mountPath: /mnt/volume1 - # readOnly: true - # - name: grafana-secrets - # mountPath: /mnt/volume2 - -## Additional Grafana server volumes -extraVolumes: [] - # - name: extra-volume-0 - # existingClaim: volume-claim - # - name: extra-volume-1 - # hostPath: - # path: /usr/shared/ - # type: "" - # - name: grafana-secrets - # csi: - # driver: secrets-store.csi.k8s.io - # readOnly: true - # volumeAttributes: - # secretProviderClass: "grafana-env-spc" - -## Container Lifecycle Hooks. Execute a specific bash command or make an HTTP request -lifecycleHooks: {} - # postStart: - # exec: - # command: [] - -## Pass the plugins you want installed as a list. -## -plugins: [] - # - digrich-bubblechart-panel - # - grafana-clock-panel - ## You can also use other plugin download URL, as long as they are valid zip files, - ## and specify the name of the plugin after the semicolon. Like this: - # - https://grafana.com/api/plugins/marcusolsson-json-datasource/versions/1.3.2/download;marcusolsson-json-datasource - -## 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: default -# defaultRegion: us-east-1 -# deleteDatasources: [] -# - name: Prometheus - -## Configure grafana alerting (can be templated) -## ref: http://docs.grafana.org/administration/provisioning/#alerting -## -alerting: {} - # rules.yaml: - # apiVersion: 1 - # groups: - # - orgId: 1 - # name: '{{ .Chart.Name }}_my_rule_group' - # folder: my_first_folder - # interval: 60s - # rules: - # - uid: my_id_1 - # title: my_first_rule - # condition: A - # data: - # - refId: A - # datasourceUid: '-100' - # model: - # conditions: - # - evaluator: - # params: - # - 3 - # type: gt - # operator: - # type: and - # query: - # params: - # - A - # reducer: - # type: last - # type: query - # datasource: - # type: __expr__ - # uid: '-100' - # expression: 1==0 - # intervalMs: 1000 - # maxDataPoints: 43200 - # refId: A - # type: math - # dashboardUid: my_dashboard - # panelId: 123 - # noDataState: Alerting - # for: 60s - # annotations: - # some_key: some_value - # labels: - # team: sre_team_1 - # contactpoints.yaml: - # secret: - # apiVersion: 1 - # contactPoints: - # - orgId: 1 - # name: cp_1 - # receivers: - # - uid: first_uid - # type: pagerduty - # settings: - # integrationKey: XXX - # severity: critical - # class: ping failure - # component: Grafana - # group: app-stack - # summary: | - # {{ `{{ include "default.message" . }}` }} - -## 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 - # local-dashboard-gitlab: - # url: https://example.com/repository/test-gitlab.json - # gitlabToken: '' - # local-dashboard-bitbucket: - # url: https://example.com/repository/test-bitbucket.json - # bearerToken: '' - # local-dashboard-azure: - # url: https://example.com/repository/test-azure.json - # basic: '' - # acceptHeader: '*/*' - -## 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/ - 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 - server: - domain: "{{ if (and .Values.ingress.enabled .Values.ingress.hosts) }}{{ .Values.ingress.hosts | first }}{{ else }}''{{ end }}" -## 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.26.1 - sha: "" - imagePullPolicy: IfNotPresent - resources: {} -# limits: -# cpu: 100m -# memory: 100Mi -# requests: -# cpu: 50m -# memory: 50Mi - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - seccompProfile: - type: RuntimeDefault - # skipTlsVerify Set to true to skip tls verification for kube api calls - # skipTlsVerify: true - enableUniqueFilenames: false - readinessProbe: {} - livenessProbe: {} - # Log level default for all sidecars. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL. Defaults to INFO - # logLevel: INFO - alerts: - enabled: false - # Additional environment variables for the alerts sidecar - env: {} - # Do not reprocess already processed unchanged resources on k8s API reconnect. - # ignoreAlreadyProcessed: true - # label that the configmaps with alert are marked with - label: grafana_alert - # value of label that the configmaps with alert are set to - labelValue: "" - # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL. - # logLevel: INFO - # If specified, the sidecar will search for alert 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 - # 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. - watchMethod: WATCH - # search in configmap, secret or both - resource: both - # watchServerTimeout: request to the server, asking it to cleanly close the connection after that. - # defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S - # watchServerTimeout: 3600 - # - # watchClientTimeout: is a client-side timeout, configuring your local socket. - # If you have a network outage dropping all packets with no RST/FIN, - # this is how long your client waits before realizing & dropping the connection. - # defaults to 66sec (sic!) - # watchClientTimeout: 60 - # - # Endpoint to send request to reload alerts - reloadURL: "http://localhost:3000/api/admin/provisioning/alerting/reload" - # Absolute path to shell script to execute after a alert got reloaded - script: null - skipReload: false - # This is needed if skipReload is true, to load any alerts defined at startup time. - # Deploy the alert sidecar as an initContainer. - initAlerts: false - # Additional alert sidecar volume mounts - extraMounts: [] - # Sets the size limit of the alert sidecar emptyDir volume - sizeLimit: {} - dashboards: - enabled: false - # Additional environment variables for the dashboards sidecar - env: {} - # Do not reprocess already processed unchanged resources on k8s API reconnect. - # ignoreAlreadyProcessed: true - 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: "" - # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL. - # logLevel: INFO - # 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 - # Namespaces list. If specified, the sidecar will search for config-maps/secrets inside these namespaces. - # 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 - # 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. - watchMethod: WATCH - # search in configmap, secret or both - resource: both - # 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 - # Endpoint to send request to reload alerts - reloadURL: "http://localhost:3000/api/admin/provisioning/dashboards/reload" - # Absolute path to shell script to execute after a configmap got reloaded - script: null - skipReload: false - # watchServerTimeout: request to the server, asking it to cleanly close the connection after that. - # defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S - # watchServerTimeout: 3600 - # - # watchClientTimeout: is a client-side timeout, configuring your local socket. - # If you have a network outage dropping all packets with no RST/FIN, - # this is how long your client waits before realizing & dropping the connection. - # defaults to 66sec (sic!) - # watchClientTimeout: 60 - # - # 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 - # Additional dashboard sidecar volume mounts - extraMounts: [] - # Sets the size limit of the dashboard sidecar emptyDir volume - sizeLimit: {} - datasources: - enabled: false - # Additional environment variables for the datasourcessidecar - env: {} - envValueFrom: {} - # Do not reprocess already processed unchanged resources on k8s API reconnect. - # ignoreAlreadyProcessed: true - # label that the configmaps with datasources are marked with - label: grafana_datasource - # value of label that the configmaps with datasources are set to - labelValue: "" - # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL. - # logLevel: INFO - # 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 - # 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. - watchMethod: WATCH - # search in configmap, secret or both - resource: both - # watchServerTimeout: request to the server, asking it to cleanly close the connection after that. - # defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S - # watchServerTimeout: 3600 - # - # watchClientTimeout: is a client-side timeout, configuring your local socket. - # If you have a network outage dropping all packets with no RST/FIN, - # this is how long your client waits before realizing & dropping the connection. - # defaults to 66sec (sic!) - # watchClientTimeout: 60 - # - # Endpoint to send request to reload datasources - reloadURL: "http://localhost:3000/api/admin/provisioning/datasources/reload" - # Absolute path to shell script to execute after a datasource got reloaded - script: null - skipReload: true - # This is needed if skipReload is true, to load any datasources defined at startup time. - # Deploy the datasources sidecar as an initContainer. - initDatasources: true - # Sets the size limit of the datasource sidecar emptyDir volume - sizeLimit: {} - plugins: - enabled: false - # Additional environment variables for the plugins sidecar - env: {} - # Do not reprocess already processed unchanged resources on k8s API reconnect. - # ignoreAlreadyProcessed: true - # label that the configmaps with plugins are marked with - label: grafana_plugin - # value of label that the configmaps with plugins are set to - labelValue: "" - # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL. - # logLevel: INFO - # If specified, the sidecar will search for plugin 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 - # 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. - watchMethod: WATCH - # search in configmap, secret or both - resource: both - # watchServerTimeout: request to the server, asking it to cleanly close the connection after that. - # defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S - # watchServerTimeout: 3600 - # - # watchClientTimeout: is a client-side timeout, configuring your local socket. - # If you have a network outage dropping all packets with no RST/FIN, - # this is how long your client waits before realizing & dropping the connection. - # defaults to 66sec (sic!) - # watchClientTimeout: 60 - # - # Endpoint to send request to reload plugins - reloadURL: "http://localhost:3000/api/admin/provisioning/plugins/reload" - # Absolute path to shell script to execute after a plugin got reloaded - script: null - skipReload: false - # Deploy the datasource sidecar as an initContainer in addition to a container. - # This is needed if skipReload is true, to load any plugins defined at startup time. - initPlugins: false - # Sets the size limit of the plugin sidecar emptyDir volume - sizeLimit: {} - notifiers: - enabled: false - # Additional environment variables for the notifierssidecar - env: {} - # Do not reprocess already processed unchanged resources on k8s API reconnect. - # ignoreAlreadyProcessed: true - # label that the configmaps with notifiers are marked with - label: grafana_notifier - # value of label that the configmaps with notifiers are set to - labelValue: "" - # Log level. Can be one of: DEBUG, INFO, WARN, ERROR, CRITICAL. - # logLevel: INFO - # 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 - # 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. - watchMethod: WATCH - # search in configmap, secret or both - resource: both - # watchServerTimeout: request to the server, asking it to cleanly close the connection after that. - # defaults to 60sec; much higher values like 3600 seconds (1h) are feasible for non-Azure K8S - # watchServerTimeout: 3600 - # - # watchClientTimeout: is a client-side timeout, configuring your local socket. - # If you have a network outage dropping all packets with no RST/FIN, - # this is how long your client waits before realizing & dropping the connection. - # defaults to 66sec (sic!) - # watchClientTimeout: 60 - # - # Endpoint to send request to reload notifiers - reloadURL: "http://localhost:3000/api/admin/provisioning/notifications/reload" - # Absolute path to shell script to execute after a notifier got reloaded - script: null - skipReload: false - # Deploy the notifier sidecar as an initContainer in addition to a container. - # This is needed if skipReload is true, to load any notifiers defined at startup time. - initNotifiers: false - # Sets the size limit of the notifier sidecar emptyDir volume - sizeLimit: {} - -## Override the deployment namespace -## -namespaceOverride: "" - -## Number of old ReplicaSets to retain -## -revisionHistoryLimit: 10 - -## Add a seperate remote image renderer deployment/service -imageRenderer: - deploymentStrategy: {} - # Enable the image-renderer deployment & service - enabled: false - replicas: 1 - autoscaling: - enabled: false - minReplicas: 1 - maxReplicas: 5 - targetCPU: "60" - targetMemory: "" - behavior: {} - image: - # image-renderer Image repository - repository: rancher/mirrored-grafana-grafana-image-renderer - # image-renderer Image tag - tag: 3.10.5 - # image-renderer Image sha (optional) - sha: "" - # image-renderer ImagePullPolicy - pullPolicy: Always - # extra environment variables - env: - HTTP_HOST: "0.0.0.0" - # RENDERING_ARGS: --no-sandbox,--disable-gpu,--window-size=1280x758 - # RENDERING_MODE: clustered - # IGNORE_HTTPS_ERRORS: true - - ## "valueFrom" environment variable references that will be added to deployment pods. Name is templated. - ## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core - ## Renders in container spec as: - ## env: - ## ... - ## - name: - ## valueFrom: - ## - envValueFrom: {} - # ENV_NAME: - # configMapKeyRef: - # name: configmap-name - # key: value_key - - # image-renderer deployment serviceAccount - serviceAccountName: "" - # image-renderer deployment securityContext - securityContext: {} - # image-renderer deployment container securityContext - containerSecurityContext: - seccompProfile: - type: RuntimeDefault - capabilities: - drop: ['ALL'] - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - ## image-renderer pod annotation - podAnnotations: {} - # image-renderer deployment Host Aliases - hostAliases: [] - # image-renderer deployment priority class - priorityClassName: '' - service: - # Enable the image-renderer service - enabled: true - # image-renderer service port name - portName: 'http' - # image-renderer service port used by both service and deployment - port: 8081 - targetPort: 8081 - # Adds the appProtocol field to the image-renderer service. This allows to work with istio protocol selection. Ex: "http" or "tcp" - appProtocol: "" - 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: [] - # See: https://doc.crds.dev/github.com/prometheus-operator/kube-prometheus/monitoring.coreos.com/ServiceMonitor/v1@v0.11.0#spec-targetLabels - targetLabels: [] - # - targetLabel1 - # - targetLabel2 - # If https is enabled in Grafana, this needs to be set as 'https' to correctly configure the callback used in Grafana - grafanaProtocol: http - # 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 - # Allow additional services to access image-renderer (eg. Prometheus operator when ServiceMonitor is enabled) - extraIngressSelectors: [] - resources: {} -# limits: -# cpu: 100m -# memory: 100Mi -# requests: -# cpu: 50m -# memory: 50Mi - ## 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 (evaluated as template) - ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity - ## - affinity: {} - - ## Use an alternate scheduler, e.g. "stork". - ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ - ## - # schedulerName: "default-scheduler" - -networkPolicy: - ## @param networkPolicy.enabled Enable creation of NetworkPolicy resources. Only Ingress traffic is filtered for now. - ## - enabled: false - ## @param networkPolicy.allowExternal Don't require client label for connections - ## The Policy model to apply. When set to false, only pods with the correct - ## client label will have network access to grafana port defined. - ## When true, grafana will accept connections from any source - ## (with the correct destination port). - ## - ingress: true - ## @param networkPolicy.ingress When true enables the creation - ## an ingress network policy - ## - allowExternal: true - ## @param networkPolicy.explicitNamespacesSelector A Kubernetes LabelSelector to explicitly select namespaces from which traffic could be allowed - ## If explicitNamespacesSelector is missing or set to {}, only client Pods that are in the networkPolicy's namespace - ## and that match other criteria, the ones that have the good label, can reach the grafana. - ## But sometimes, we want the grafana to be accessible to clients from other namespaces, in this case, we can use this - ## LabelSelector to select these namespaces, note that the networkPolicy's namespace should also be explicitly added. - ## - ## Example: - ## explicitNamespacesSelector: - ## matchLabels: - ## role: frontend - ## matchExpressions: - ## - {key: role, operator: In, values: [frontend]} - ## - explicitNamespacesSelector: {} - ## - ## - ## - ## - ## - ## - egress: - ## @param networkPolicy.egress.enabled When enabled, an egress network policy will be - ## created allowing grafana to connect to external data sources from kubernetes cluster. - enabled: false - ## - ## @param networkPolicy.egress.blockDNSResolution When enabled, DNS resolution will be blocked - ## for all pods in the grafana namespace. - blockDNSResolution: false - ## - ## @param networkPolicy.egress.ports Add individual ports to be allowed by the egress - ports: [] - ## Add ports to the egress by specifying - port: - ## E.X. - ## - port: 80 - ## - port: 443 - ## - ## @param networkPolicy.egress.to Allow egress traffic to specific destinations - to: [] - ## Add destinations to the egress by specifying - ipBlock: - ## E.X. - ## to: - ## - namespaceSelector: - ## matchExpressions: - ## - {key: role, operator: In, values: [grafana]} - ## - ## - ## - ## - ## - -# Enable backward compatibility of kubernetes where version below 1.13 doesn't have the enableServiceLinks option -enableKubeBackwardCompatibility: false -useStatefulSet: false -# Create a dynamic manifests via values: -extraObjects: [] - # - apiVersion: "kubernetes-client.io/v1" - # kind: ExternalSecret - # metadata: - # name: grafana-secrets - # spec: - # backendType: gcpSecretsManager - # data: - # - key: grafana-admin-password - # name: adminPassword - -# assertNoLeakedSecrets is a helper function defined in _helpers.tpl that checks if secret -# values are not exposed in the rendered grafana.ini configmap. It is enabled by default. -# -# To pass values into grafana.ini without exposing them in a configmap, use variable expansion: -# https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/#variable-expansion -# -# Alternatively, if you wish to allow secret values to be exposed in the rendered grafana.ini configmap, -# you can disable this check by setting assertNoLeakedSecrets to false. -assertNoLeakedSecrets: true diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/Chart.yaml deleted file mode 100644 index acd648a..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: hardenedKubelet -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedKubelet/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/Chart.yaml deleted file mode 100644 index 068932b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: hardenedNodeExporter -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/hardenedNodeExporter/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/Chart.yaml deleted file mode 100644 index 275e02e..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: k3sServer -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/k3sServer/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/.helmignore deleted file mode 100644 index f0c1319..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/Chart.yaml deleted file mode 100644 index 002a6a1..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -annotations: - artifacthub.io/license: Apache-2.0 - artifacthub.io/links: | - - name: Chart Source - url: https://github.com/prometheus-community/helm-charts - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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: v2 -appVersion: 2.10.1 -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 -- email: david@0xdc.me - name: dotdc -name: kube-state-metrics -sources: -- https://github.com/kubernetes/kube-state-metrics/ -type: application -version: 5.16.4 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/README.md deleted file mode 100644 index 843be89..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/README.md +++ /dev/null @@ -1,85 +0,0 @@ -# kube-state-metrics Helm Chart - -Installs the [kube-state-metrics agent](https://github.com/kubernetes/kube-state-metrics). - -## Get Repository 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 install [RELEASE_NAME] prometheus-community/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 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._ - -## Upgrading Chart - -```console -helm upgrade [RELEASE_NAME] prometheus-community/kube-state-metrics [flags] -``` - -_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._ - -### Migrating from stable/kube-state-metrics and kubernetes/kube-state-metrics - -You can upgrade in-place: - -1. [get repository info](#get-repository-info) -1. [upgrade](#upgrading-chart) your existing release name using the new chart repository - -## Upgrading to v3.0.0 - -v3.0.0 includes kube-state-metrics v2.0, see the [changelog](https://github.com/kubernetes/kube-state-metrics/blob/release-2.0/CHANGELOG.md) for major changes on the application-side. - -The upgraded chart now the following changes: - -* Dropped support for helm v2 (helm v3 or later is required) -* collectors key was renamed to resources -* namespace key was renamed to namespaces - -## 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-state-metrics -``` - -### kube-rbac-proxy - -You can enable `kube-state-metrics` endpoint protection using `kube-rbac-proxy`. By setting `kubeRBACProxy.enabled: true`, this chart will deploy one RBAC proxy container per endpoint (metrics & telemetry). -To authorize access, authenticate your requests (via a `ServiceAccount` for example) with a `ClusterRole` attached such as: - -```yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: kube-state-metrics-read -rules: - - apiGroups: [ "" ] - resources: ["services/kube-state-metrics"] - verbs: - - get -``` - -See [kube-rbac-proxy examples](https://github.com/brancz/kube-rbac-proxy/tree/master/examples/resource-attributes) for more details. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/NOTES.txt b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/NOTES.txt deleted file mode 100644 index 3589c24..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/NOTES.txt +++ /dev/null @@ -1,23 +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. - -{{- if .Values.kubeRBACProxy.enabled}} - -kube-rbac-proxy endpoint protections is enabled: -- Metrics endpoints are now HTTPS -- Ensure that the client authenticates the requests (e.g. via service account) with the following role permissions: -``` -rules: - - apiGroups: [ "" ] - resources: ["services/{{ template "kube-state-metrics.fullname" . }}"] - verbs: - - get -``` -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/_helpers.tpl deleted file mode 100644 index ed277fb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/_helpers.tpl +++ /dev/null @@ -1,196 +0,0 @@ -# Rancher -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -{{- define "monitoring_registry" -}} - {{- $temp_registry := (include "system_default_registry" .) -}} - {{- if $temp_registry -}} - {{- trimSuffix "/" $temp_registry -}} - {{- else -}} - {{- .Values.global.imageRegistry -}} - {{- 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 -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "kube-state-metrics.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Generate basic labels -*/}} -{{- define "kube-state-metrics.labels" }} -helm.sh/chart: {{ template "kube-state-metrics.chart" . }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/component: metrics -app.kubernetes.io/part-of: {{ template "kube-state-metrics.name" . }} -{{- include "kube-state-metrics.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -{{- if .Values.customLabels }} -{{ toYaml .Values.customLabels }} -{{- end }} -{{- if .Values.releaseLabel }} -release: {{ .Release.Name }} -{{- end }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "kube-state-metrics.selectorLabels" }} -{{- if .Values.selectorOverride }} -{{ toYaml .Values.selectorOverride }} -{{- else }} -app.kubernetes.io/name: {{ include "kube-state-metrics.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} -{{- end }} - -{{/* Sets default scrape limits for servicemonitor */}} -{{- define "servicemonitor.scrapeLimits" -}} -{{- with .sampleLimit }} -sampleLimit: {{ . }} -{{- end }} -{{- with .targetLimit }} -targetLimit: {{ . }} -{{- end }} -{{- with .labelLimit }} -labelLimit: {{ . }} -{{- end }} -{{- with .labelNameLengthLimit }} -labelNameLengthLimit: {{ . }} -{{- end }} -{{- with .labelValueLengthLimit }} -labelValueLengthLimit: {{ . }} -{{- end }} -{{- end -}} - -{{/* -Formats imagePullSecrets. Input is (dict "Values" .Values "imagePullSecrets" .{specific imagePullSecrets}) -*/}} -{{- define "kube-state-metrics.imagePullSecrets" -}} -{{- range (concat .Values.global.imagePullSecrets .imagePullSecrets) }} - {{- if eq (typeOf .) "map[string]interface {}" }} -- {{ toYaml . | trim }} - {{- else }} -- name: {{ . }} - {{- end }} -{{- end }} -{{- end -}} - -{{/* -The image to use for kube-state-metrics -*/}} -{{- define "kube-state-metrics.image" -}} -{{- $registry := (include "monitoring_registry" .) }} -{{- if .Values.image.sha }} -{{- if $registry }} -{{- printf "%s/%s:%s@%s" $registry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) .Values.image.sha }} -{{- else }} -{{- printf "%s/%s:%s@%s" .Values.image.registry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) .Values.image.sha }} -{{- end }} -{{- else }} -{{- if $registry }} -{{- printf "%s/%s:%s" $registry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) }} -{{- else }} -{{- printf "%s/%s:%s" .Values.image.registry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -The image to use for kubeRBACProxy -*/}} -{{- define "kubeRBACProxy.image" -}} -{{- $registry := (include "monitoring_registry" .) }} -{{- if .Values.kubeRBACProxy.image.sha }} -{{- if $registry }} -{{- printf "%s/%s:%s@%s" $registry .Values.kubeRBACProxy.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.kubeRBACProxy.image.tag) .Values.kubeRBACProxy.image.sha }} -{{- else }} -{{- printf "%s/%s:%s@%s" .Values.kubeRBACProxy.image.registry .Values.kubeRBACProxy.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.kubeRBACProxy.image.tag) .Values.kubeRBACProxy.image.sha }} -{{- end }} -{{- else }} -{{- if $registry }} -{{- printf "%s/%s:%s" $registry .Values.kubeRBACProxy.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.kubeRBACProxy.image.tag) }} -{{- else }} -{{- printf "%s/%s:%s" .Values.kubeRBACProxy.image.registry .Values.kubeRBACProxy.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.kubeRBACProxy.image.tag) }} -{{- end }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/ciliumnetworkpolicy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/ciliumnetworkpolicy.yaml deleted file mode 100644 index 025cd47..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/ciliumnetworkpolicy.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if and .Values.networkPolicy.enabled (eq .Values.networkPolicy.flavor "cilium") }} -apiVersion: cilium.io/v2 -kind: CiliumNetworkPolicy -metadata: - {{- if .Values.annotations }} - annotations: - {{ toYaml .Values.annotations | nindent 4 }} - {{- end }} - labels: - {{- include "kube-state-metrics.labels" . | indent 4 }} - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} -spec: - endpointSelector: - matchLabels: - {{- include "kube-state-metrics.selectorLabels" . | indent 6 }} - egress: - {{- if and .Values.networkPolicy.cilium .Values.networkPolicy.cilium.kubeApiServerSelector }} - {{ toYaml .Values.networkPolicy.cilium.kubeApiServerSelector | nindent 6 }} - {{- else }} - - toEntities: - - kube-apiserver - {{- end }} - ingress: - - toPorts: - - ports: - - port: {{ .Values.service.port | quote }} - protocol: TCP - {{- if .Values.selfMonitor.enabled }} - - port: {{ .Values.selfMonitor.telemetryPort | default 8081 | quote }} - protocol: TCP - {{ end }} -{{ end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/clusterrolebinding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/clusterrolebinding.yaml deleted file mode 100644 index cf9f628..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.rbac.create .Values.rbac.useClusterRole -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - {{- include "kube-state-metrics.labels" . | indent 4 }} - 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.serviceAccountName" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/crs-configmap.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/crs-configmap.yaml deleted file mode 100644 index d38a75a..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/crs-configmap.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if .Values.customResourceState.enabled}} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "kube-state-metrics.fullname" . }}-customresourcestate-config - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - {{- include "kube-state-metrics.labels" . | indent 4 }} - {{- if .Values.annotations }} - annotations: - {{ toYaml .Values.annotations | nindent 4 }} - {{- end }} -data: - config.yaml: | - {{- toYaml .Values.customResourceState.config | nindent 4 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/deployment.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/deployment.yaml deleted file mode 100644 index 03158eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/deployment.yaml +++ /dev/null @@ -1,314 +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: - {{- include "kube-state-metrics.labels" . | indent 4 }} - {{- if .Values.annotations }} - annotations: -{{ toYaml .Values.annotations | indent 4 }} - {{- end }} -spec: - selector: - matchLabels: - {{- include "kube-state-metrics.selectorLabels" . | indent 6 }} - replicas: {{ .Values.replicas }} - {{- if not .Values.autosharding.enabled }} - strategy: - type: {{ .Values.updateStrategy | default "RollingUpdate" }} - {{- end }} - revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} - {{- if .Values.autosharding.enabled }} - serviceName: {{ template "kube-state-metrics.fullname" . }} - volumeClaimTemplates: [] - {{- end }} - template: - metadata: - labels: - {{- include "kube-state-metrics.labels" . | indent 8 }} - {{- 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: {{- omit .Values.securityContext "enabled" | toYaml | nindent 8 }} - {{- end }} - {{- if .Values.priorityClassName }} - priorityClassName: {{ .Values.priorityClassName }} - {{- end }} - {{- with .Values.initContainers }} - initContainers: - {{- toYaml . | nindent 6 }} - {{- end }} - containers: - {{- $servicePort := ternary 9090 (.Values.service.port | default 8080) .Values.kubeRBACProxy.enabled}} - {{- $telemetryPort := ternary 9091 (.Values.selfMonitor.telemetryPort | default 8081) .Values.kubeRBACProxy.enabled}} - - name: {{ template "kube-state-metrics.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 }} - {{- .Values.extraArgs | toYaml | nindent 8 }} - {{- end }} - - --port={{ $servicePort }} - {{- if .Values.collectors }} - - --resources={{ .Values.collectors | join "," }} - {{- end }} - {{- if .Values.metricLabelsAllowlist }} - - --metric-labels-allowlist={{ .Values.metricLabelsAllowlist | join "," }} - {{- end }} - {{- if .Values.metricAnnotationsAllowList }} - - --metric-annotations-allowlist={{ .Values.metricAnnotationsAllowList | join "," }} - {{- end }} - {{- if .Values.metricAllowlist }} - - --metric-allowlist={{ .Values.metricAllowlist | join "," }} - {{- end }} - {{- if .Values.metricDenylist }} - - --metric-denylist={{ .Values.metricDenylist | join "," }} - {{- end }} - {{- $namespaces := list }} - {{- if .Values.namespaces }} - {{- range $ns := join "," .Values.namespaces | split "," }} - {{- $namespaces = append $namespaces (tpl $ns $) }} - {{- end }} - {{- end }} - {{- if .Values.releaseNamespace }} - {{- $namespaces = append $namespaces ( include "kube-state-metrics.namespace" . ) }} - {{- end }} - {{- if $namespaces }} - - --namespaces={{ $namespaces | mustUniq | join "," }} - {{- end }} - {{- if .Values.namespacesDenylist }} - - --namespaces-denylist={{ tpl (.Values.namespacesDenylist | 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.kubeRBACProxy.enabled }} - - --telemetry-host=127.0.0.1 - - --telemetry-port={{ $telemetryPort }} - {{- else }} - {{- if .Values.selfMonitor.telemetryHost }} - - --telemetry-host={{ .Values.selfMonitor.telemetryHost }} - {{- end }} - {{- if .Values.selfMonitor.telemetryPort }} - - --telemetry-port={{ $telemetryPort }} - {{- end }} - {{- end }} - {{- if .Values.customResourceState.enabled }} - - --custom-resource-state-config-file=/etc/customresourcestate/config.yaml - {{- end }} - {{- if or (.Values.kubeconfig.enabled) (.Values.customResourceState.enabled) (.Values.volumeMounts) }} - volumeMounts: - {{- if .Values.kubeconfig.enabled }} - - name: kubeconfig - mountPath: /opt/k8s/.kube/ - readOnly: true - {{- end }} - {{- if .Values.customResourceState.enabled }} - - name: customresourcestate-config - mountPath: /etc/customresourcestate - readOnly: true - {{- end }} - {{- if .Values.volumeMounts }} -{{ toYaml .Values.volumeMounts | indent 8 }} - {{- end }} - {{- end }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - image: {{ include "kube-state-metrics.image" . }} - {{- if eq .Values.kubeRBACProxy.enabled false }} - ports: - - containerPort: {{ .Values.service.port | default 8080}} - name: "http" - {{- if .Values.selfMonitor.enabled }} - - containerPort: {{ $telemetryPort }} - name: "metrics" - {{- end }} - {{- end }} - livenessProbe: - failureThreshold: {{ .Values.livenessProbe.failureThreshold }} - httpGet: - {{- if .Values.hostNetwork }} - host: 127.0.0.1 - {{- end }} - httpHeaders: - {{- range $_, $header := .Values.livenessProbe.httpGet.httpHeaders }} - - name: {{ $header.name }} - value: {{ $header.value }} - {{- end }} - path: /healthz - port: {{ $servicePort }} - scheme: {{ upper .Values.livenessProbe.httpGet.scheme }} - initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.livenessProbe.periodSeconds }} - successThreshold: {{ .Values.livenessProbe.successThreshold }} - timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} - readinessProbe: - failureThreshold: {{ .Values.readinessProbe.failureThreshold }} - httpGet: - {{- if .Values.hostNetwork }} - host: 127.0.0.1 - {{- end }} - httpHeaders: - {{- range $_, $header := .Values.readinessProbe.httpGet.httpHeaders }} - - name: {{ $header.name }} - value: {{ $header.value }} - {{- end }} - path: / - port: {{ $servicePort }} - scheme: {{ upper .Values.readinessProbe.httpGet.scheme }} - initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.readinessProbe.periodSeconds }} - successThreshold: {{ .Values.readinessProbe.successThreshold }} - timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} - {{- if .Values.resources }} - resources: -{{ toYaml .Values.resources | indent 10 }} -{{- end }} -{{- if .Values.containerSecurityContext }} - securityContext: -{{ toYaml .Values.containerSecurityContext | indent 10 }} -{{- end }} - {{- if .Values.kubeRBACProxy.enabled }} - - name: kube-rbac-proxy-http - args: - {{- if .Values.kubeRBACProxy.extraArgs }} - {{- .Values.kubeRBACProxy.extraArgs | toYaml | nindent 8 }} - {{- end }} - - --secure-listen-address=:{{ .Values.service.port | default 8080}} - - --upstream=http://127.0.0.1:{{ $servicePort }}/ - - --proxy-endpoints-port=8888 - - --config-file=/etc/kube-rbac-proxy-config/config-file.yaml - volumeMounts: - - name: kube-rbac-proxy-config - mountPath: /etc/kube-rbac-proxy-config - {{- with .Values.kubeRBACProxy.volumeMounts }} - {{- toYaml . | nindent 10 }} - {{- end }} - imagePullPolicy: {{ .Values.kubeRBACProxy.image.pullPolicy }} - image: {{ include "kubeRBACProxy.image" . }} - ports: - - containerPort: {{ .Values.service.port | default 8080}} - name: "http" - - containerPort: 8888 - name: "http-healthz" - readinessProbe: - httpGet: - scheme: HTTPS - port: 8888 - path: healthz - initialDelaySeconds: 5 - timeoutSeconds: 5 - {{- if .Values.kubeRBACProxy.resources }} - resources: -{{ toYaml .Values.kubeRBACProxy.resources | indent 10 }} -{{- end }} -{{- if .Values.kubeRBACProxy.containerSecurityContext }} - securityContext: -{{ toYaml .Values.kubeRBACProxy.containerSecurityContext | indent 10 }} -{{- end }} - {{- if .Values.selfMonitor.enabled }} - - name: kube-rbac-proxy-telemetry - args: - {{- if .Values.kubeRBACProxy.extraArgs }} - {{- .Values.kubeRBACProxy.extraArgs | toYaml | nindent 8 }} - {{- end }} - - --secure-listen-address=:{{ .Values.selfMonitor.telemetryPort | default 8081 }} - - --upstream=http://127.0.0.1:{{ $telemetryPort }}/ - - --proxy-endpoints-port=8889 - - --config-file=/etc/kube-rbac-proxy-config/config-file.yaml - volumeMounts: - - name: kube-rbac-proxy-config - mountPath: /etc/kube-rbac-proxy-config - {{- with .Values.kubeRBACProxy.volumeMounts }} - {{- toYaml . | nindent 10 }} - {{- end }} - imagePullPolicy: {{ .Values.kubeRBACProxy.image.pullPolicy }} - image: {{ include "kubeRBACProxy.image" . }} - ports: - - containerPort: {{ .Values.selfMonitor.telemetryPort | default 8081 }} - name: "metrics" - - containerPort: 8889 - name: "metrics-healthz" - readinessProbe: - httpGet: - scheme: HTTPS - port: 8889 - path: healthz - initialDelaySeconds: 5 - timeoutSeconds: 5 - {{- if .Values.kubeRBACProxy.resources }} - resources: -{{ toYaml .Values.kubeRBACProxy.resources | indent 10 }} -{{- end }} -{{- if .Values.kubeRBACProxy.containerSecurityContext }} - securityContext: -{{ toYaml .Values.kubeRBACProxy.containerSecurityContext | indent 10 }} -{{- end }} - {{- end }} - {{- end }} - {{- with .Values.containers }} - {{- toYaml . | nindent 6 }} - {{- end }} -{{- if or .Values.imagePullSecrets .Values.global.imagePullSecrets }} - imagePullSecrets: - {{- include "kube-state-metrics.imagePullSecrets" (dict "Values" .Values "imagePullSecrets" .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.topologySpreadConstraints }} - topologySpreadConstraints: -{{ toYaml .Values.topologySpreadConstraints | indent 8 }} - {{- end }} - {{- if or (.Values.kubeconfig.enabled) (.Values.customResourceState.enabled) (.Values.volumes) (.Values.kubeRBACProxy.enabled) }} - volumes: - {{- if .Values.kubeconfig.enabled}} - - name: kubeconfig - secret: - secretName: {{ template "kube-state-metrics.fullname" . }}-kubeconfig - {{- end }} - {{- if .Values.kubeRBACProxy.enabled}} - - name: kube-rbac-proxy-config - configMap: - name: {{ template "kube-state-metrics.fullname" . }}-rbac-config - {{- end }} - {{- if .Values.customResourceState.enabled}} - - name: customresourcestate-config - configMap: - name: {{ template "kube-state-metrics.fullname" . }}-customresourcestate-config - {{- end }} - {{- if .Values.volumes }} -{{ toYaml .Values.volumes | indent 8 }} - {{- end }} - {{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/extra-manifests.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/extra-manifests.yaml deleted file mode 100644 index 567f7bf..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/extra-manifests.yaml +++ /dev/null @@ -1,4 +0,0 @@ -{{ range .Values.extraManifests }} ---- -{{ tpl (toYaml .) $ }} -{{ end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/kubeconfig-secret.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/kubeconfig-secret.yaml deleted file mode 100644 index 6af0084..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/kubeconfig-secret.yaml +++ /dev/null @@ -1,12 +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: - {{- include "kube-state-metrics.labels" . | indent 4 }} -type: Opaque -data: - config: '{{ .Values.kubeconfig.secret }}' -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/networkpolicy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/networkpolicy.yaml deleted file mode 100644 index 309b38e..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/networkpolicy.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if and .Values.networkPolicy.enabled (eq .Values.networkPolicy.flavor "kubernetes") }} -kind: NetworkPolicy -apiVersion: networking.k8s.io/v1 -metadata: - {{- if .Values.annotations }} - annotations: - {{ toYaml .Values.annotations | nindent 4 }} - {{- end }} - labels: - {{- include "kube-state-metrics.labels" . | indent 4 }} - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} -spec: - {{- if .Values.networkPolicy.egress }} - ## Deny all egress by default - egress: - {{- toYaml .Values.networkPolicy.egress | nindent 4 }} - {{- end }} - ingress: - {{- if .Values.networkPolicy.ingress }} - {{- toYaml .Values.networkPolicy.ingress | nindent 4 }} - {{- else }} - ## Allow ingress on default ports by default - - ports: - - port: {{ .Values.service.port | default 8080 }} - protocol: TCP - {{- if .Values.selfMonitor.enabled }} - {{- $telemetryPort := ternary 9091 (.Values.selfMonitor.telemetryPort | default 8081) .Values.kubeRBACProxy.enabled}} - - port: {{ $telemetryPort }} - protocol: TCP - {{- end }} - {{- end }} - podSelector: - {{- if .Values.networkPolicy.podSelector }} - {{- toYaml .Values.networkPolicy.podSelector | nindent 4 }} - {{- else }} - matchLabels: - {{- include "kube-state-metrics.selectorLabels" . | indent 6 }} - {{- end }} - policyTypes: - - Ingress - - Egress -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/pdb.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/pdb.yaml deleted file mode 100644 index 3771b51..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/pdb.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if .Values.podDisruptionBudget -}} -{{ if $.Capabilities.APIVersions.Has "policy/v1/PodDisruptionBudget" -}} -apiVersion: policy/v1 -{{- else -}} -apiVersion: policy/v1beta1 -{{- end }} -kind: PodDisruptionBudget -metadata: - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - {{- include "kube-state-metrics.labels" . | indent 4 }} -spec: - selector: - matchLabels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} -{{ toYaml .Values.podDisruptionBudget | indent 2 }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/podsecuritypolicy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/podsecuritypolicy.yaml deleted file mode 100644 index d9d944d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/podsecuritypolicy.yaml +++ /dev/null @@ -1,39 +0,0 @@ -{{- if and .Values.rbac.create (and (or .Values.global.cattle.psp.enabled .Values.podSecurityPolicy.enabled) (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy")) }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "kube-state-metrics.fullname" . }} - labels: - {{- include "kube-state-metrics.labels" . | indent 4 }} -{{- 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/psp-clusterrole.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/psp-clusterrole.yaml deleted file mode 100644 index c69e01a..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/psp-clusterrole.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if and .Values.rbac.create (and (or .Values.global.cattle.psp.enabled .Values.podSecurityPolicy.enabled) (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy")) }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - {{- include "kube-state-metrics.labels" . | indent 4 }} - 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/psp-clusterrolebinding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/psp-clusterrolebinding.yaml deleted file mode 100644 index df81c49..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/psp-clusterrolebinding.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if and .Values.rbac.create (and (or .Values.global.cattle.psp.enabled .Values.podSecurityPolicy.enabled) (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy")) }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - {{- include "kube-state-metrics.labels" . | indent 4 }} - 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.serviceAccountName" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/rbac-configmap.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/rbac-configmap.yaml deleted file mode 100644 index 671dc9d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/rbac-configmap.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if .Values.kubeRBACProxy.enabled}} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "kube-state-metrics.fullname" . }}-rbac-config - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - {{- include "kube-state-metrics.labels" . | indent 4 }} - {{- if .Values.annotations }} - annotations: - {{ toYaml .Values.annotations | nindent 4 }} - {{- end }} -data: - config-file.yaml: |+ - authorization: - resourceAttributes: - namespace: {{ template "kube-state-metrics.namespace" . }} - apiVersion: v1 - resource: services - subresource: {{ template "kube-state-metrics.fullname" . }} - name: {{ template "kube-state-metrics.fullname" . }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/role.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/role.yaml deleted file mode 100644 index 0170878..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/role.yaml +++ /dev/null @@ -1,215 +0,0 @@ -{{- if not (kindIs "slice" .Values.collectors) }} -{{- fail "Collectors need to be a List since kube-state-metrics chart 3.2.2. Please check README for more information."}} -{{- end }} -{{- if and (eq .Values.rbac.create true) (not .Values.rbac.useExistingRole) -}} -{{- range (ternary (join "," .Values.namespaces | split "," ) (list "") (eq $.Values.rbac.useClusterRole false)) }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -{{- if eq $.Values.rbac.useClusterRole false }} -kind: Role -{{- else }} -kind: ClusterRole -{{- end }} -metadata: - labels: - {{- include "kube-state-metrics.labels" $ | indent 4 }} - name: {{ template "kube-state-metrics.fullname" $ }} -{{- if eq $.Values.rbac.useClusterRole false }} - namespace: {{ . }} -{{- end }} -rules: -{{ if has "certificatesigningrequests" $.Values.collectors }} -- apiGroups: ["certificates.k8s.io"] - resources: - - certificatesigningrequests - verbs: ["list", "watch"] -{{ end -}} -{{ if has "configmaps" $.Values.collectors }} -- apiGroups: [""] - resources: - - configmaps - verbs: ["list", "watch"] -{{ end -}} -{{ if has "cronjobs" $.Values.collectors }} -- apiGroups: ["batch"] - resources: - - cronjobs - verbs: ["list", "watch"] -{{ end -}} -{{ if has "daemonsets" $.Values.collectors }} -- apiGroups: ["extensions", "apps"] - resources: - - daemonsets - verbs: ["list", "watch"] -{{ end -}} -{{ if has "deployments" $.Values.collectors }} -- apiGroups: ["extensions", "apps"] - resources: - - deployments - verbs: ["list", "watch"] -{{ end -}} -{{ if has "endpoints" $.Values.collectors }} -- apiGroups: [""] - resources: - - endpoints - verbs: ["list", "watch"] -{{ end -}} -{{ if has "endpointslices" $.Values.collectors }} -- apiGroups: ["discovery.k8s.io"] - resources: - - endpointslices - verbs: ["list", "watch"] -{{ end -}} -{{ if has "horizontalpodautoscalers" $.Values.collectors }} -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: ["list", "watch"] -{{ end -}} -{{ if has "ingresses" $.Values.collectors }} -- apiGroups: ["extensions", "networking.k8s.io"] - resources: - - ingresses - verbs: ["list", "watch"] -{{ end -}} -{{ if has "jobs" $.Values.collectors }} -- apiGroups: ["batch"] - resources: - - jobs - verbs: ["list", "watch"] -{{ end -}} -{{ if has "leases" $.Values.collectors }} -- apiGroups: ["coordination.k8s.io"] - resources: - - leases - verbs: ["list", "watch"] -{{ end -}} -{{ if has "limitranges" $.Values.collectors }} -- apiGroups: [""] - resources: - - limitranges - verbs: ["list", "watch"] -{{ end -}} -{{ if has "mutatingwebhookconfigurations" $.Values.collectors }} -- apiGroups: ["admissionregistration.k8s.io"] - resources: - - mutatingwebhookconfigurations - verbs: ["list", "watch"] -{{ end -}} -{{ if has "namespaces" $.Values.collectors }} -- apiGroups: [""] - resources: - - namespaces - verbs: ["list", "watch"] -{{ end -}} -{{ if has "networkpolicies" $.Values.collectors }} -- apiGroups: ["networking.k8s.io"] - resources: - - networkpolicies - verbs: ["list", "watch"] -{{ end -}} -{{ if has "nodes" $.Values.collectors }} -- apiGroups: [""] - resources: - - nodes - verbs: ["list", "watch"] -{{ end -}} -{{ if has "persistentvolumeclaims" $.Values.collectors }} -- apiGroups: [""] - resources: - - persistentvolumeclaims - verbs: ["list", "watch"] -{{ end -}} -{{ if has "persistentvolumes" $.Values.collectors }} -- apiGroups: [""] - resources: - - persistentvolumes - verbs: ["list", "watch"] -{{ end -}} -{{ if has "poddisruptionbudgets" $.Values.collectors }} -- apiGroups: ["policy"] - resources: - - poddisruptionbudgets - verbs: ["list", "watch"] -{{ end -}} -{{ if has "pods" $.Values.collectors }} -- apiGroups: [""] - resources: - - pods - verbs: ["list", "watch"] -{{ end -}} -{{ if has "replicasets" $.Values.collectors }} -- apiGroups: ["extensions", "apps"] - resources: - - replicasets - verbs: ["list", "watch"] -{{ end -}} -{{ if has "replicationcontrollers" $.Values.collectors }} -- apiGroups: [""] - resources: - - replicationcontrollers - verbs: ["list", "watch"] -{{ end -}} -{{ if has "resourcequotas" $.Values.collectors }} -- apiGroups: [""] - resources: - - resourcequotas - verbs: ["list", "watch"] -{{ end -}} -{{ if has "secrets" $.Values.collectors }} -- apiGroups: [""] - resources: - - secrets - verbs: ["list", "watch"] -{{ end -}} -{{ if has "services" $.Values.collectors }} -- apiGroups: [""] - resources: - - services - verbs: ["list", "watch"] -{{ end -}} -{{ if has "statefulsets" $.Values.collectors }} -- apiGroups: ["apps"] - resources: - - statefulsets - verbs: ["list", "watch"] -{{ end -}} -{{ if has "storageclasses" $.Values.collectors }} -- apiGroups: ["storage.k8s.io"] - resources: - - storageclasses - verbs: ["list", "watch"] -{{ end -}} -{{ if has "validatingwebhookconfigurations" $.Values.collectors }} -- apiGroups: ["admissionregistration.k8s.io"] - resources: - - validatingwebhookconfigurations - verbs: ["list", "watch"] -{{ end -}} -{{ if has "volumeattachments" $.Values.collectors }} -- apiGroups: ["storage.k8s.io"] - resources: - - volumeattachments - verbs: ["list", "watch"] -{{ end -}} -{{- if $.Values.kubeRBACProxy.enabled }} -- apiGroups: ["authentication.k8s.io"] - resources: - - tokenreviews - verbs: ["create"] -- apiGroups: ["authorization.k8s.io"] - resources: - - subjectaccessreviews - verbs: ["create"] -{{- end }} -{{- if $.Values.customResourceState.enabled }} -- apiGroups: ["apiextensions.k8s.io"] - resources: - - customresourcedefinitions - verbs: ["list", "watch"] -{{- end }} -{{ if $.Values.rbac.extraRules }} -{{ toYaml $.Values.rbac.extraRules }} -{{ end }} -{{- end -}} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/rolebinding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/rolebinding.yaml deleted file mode 100644 index 330651b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/rolebinding.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if and (eq .Values.rbac.create true) (eq .Values.rbac.useClusterRole false) -}} -{{- range (join "," $.Values.namespaces) | split "," }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - labels: - {{- include "kube-state-metrics.labels" $ | indent 4 }} - 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.serviceAccountName" $ }} - namespace: {{ template "kube-state-metrics.namespace" $ }} -{{- end -}} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/service.yaml deleted file mode 100644 index 6c486a6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/service.yaml +++ /dev/null @@ -1,49 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - {{- include "kube-state-metrics.labels" . | indent 4 }} - 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 | default 8080}} - {{- if .Values.service.nodePort }} - nodePort: {{ .Values.service.nodePort }} - {{- end }} - targetPort: {{ .Values.service.port | default 8080}} - {{ if .Values.selfMonitor.enabled }} - - name: "metrics" - protocol: TCP - port: {{ .Values.selfMonitor.telemetryPort | default 8081 }} - targetPort: {{ .Values.selfMonitor.telemetryPort | default 8081 }} - {{- if .Values.selfMonitor.telemetryNodePort }} - nodePort: {{ .Values.selfMonitor.telemetryNodePort }} - {{- end }} - {{ end }} -{{- if .Values.service.loadBalancerIP }} - loadBalancerIP: "{{ .Values.service.loadBalancerIP }}" -{{- end }} -{{- if .Values.service.loadBalancerSourceRanges }} - loadBalancerSourceRanges: - {{- range $cidr := .Values.service.loadBalancerSourceRanges }} - - {{ $cidr }} - {{- end }} -{{- end }} -{{- if .Values.autosharding.enabled }} - clusterIP: None -{{- else if .Values.service.clusterIP }} - clusterIP: "{{ .Values.service.clusterIP }}" -{{- end }} - selector: - {{- include "kube-state-metrics.selectorLabels" . | indent 4 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/serviceaccount.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/serviceaccount.yaml deleted file mode 100644 index 38a93b3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/serviceaccount.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - {{- include "kube-state-metrics.labels" . | indent 4 }} - name: {{ template "kube-state-metrics.serviceAccountName" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} -{{- if .Values.serviceAccount.annotations }} - annotations: -{{ toYaml .Values.serviceAccount.annotations | indent 4 }} -{{- end }} -{{- if or .Values.serviceAccount.imagePullSecrets .Values.global.imagePullSecrets }} -imagePullSecrets: - {{- include "kube-state-metrics.imagePullSecrets" (dict "Values" .Values "imagePullSecrets" .Values.serviceAccount.imagePullSecrets) | indent 2 }} -{{- end }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/servicemonitor.yaml deleted file mode 100644 index 01ec44e..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/servicemonitor.yaml +++ /dev/null @@ -1,126 +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: - {{- include "kube-state-metrics.labels" . | indent 4 }} - {{- with .Values.prometheus.monitor.additionalLabels }} - {{- tpl (toYaml . | nindent 4) $ }} - {{- end }} - {{- with .Values.prometheus.monitor.annotations }} - annotations: - {{- tpl (toYaml . | nindent 4) $ }} - {{- end }} -spec: - jobLabel: {{ default "app.kubernetes.io/name" .Values.prometheus.monitor.jobLabel }} - {{- with .Values.prometheus.monitor.targetLabels }} - targetLabels: - {{- toYaml . | trim | nindent 4 }} - {{- end }} - {{- with .Values.prometheus.monitor.podTargetLabels }} - podTargetLabels: - {{- toYaml . | trim | nindent 4 }} - {{- end }} - {{- include "servicemonitor.scrapeLimits" .Values.prometheus.monitor | indent 2 }} - {{- if .Values.prometheus.monitor.namespaceSelector }} - namespaceSelector: - matchNames: - {{- with .Values.prometheus.monitor.namespaceSelector }} - {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - selector: - matchLabels: - {{- with .Values.prometheus.monitor.selectorOverride }} - {{- toYaml . | nindent 6 }} - {{- else }} - {{- include "kube-state-metrics.selectorLabels" . | indent 6 }} - {{- end }} - endpoints: - - port: http - {{- if .Values.prometheus.monitor.interval }} - interval: {{ .Values.prometheus.monitor.interval }} - {{- end }} - {{- if .Values.prometheus.monitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.prometheus.monitor.scrapeTimeout }} - {{- end }} - {{- if .Values.prometheus.monitor.proxyUrl }} - proxyUrl: {{ .Values.prometheus.monitor.proxyUrl}} - {{- end }} - {{- if .Values.prometheus.monitor.enableHttp2 }} - enableHttp2: {{ .Values.prometheus.monitor.enableHttp2}} - {{- end }} - {{- if .Values.prometheus.monitor.honorLabels }} - honorLabels: true - {{- end }} - metricRelabelings: - {{- if .Values.prometheus.monitor.metricRelabelings }} - {{- toYaml .Values.prometheus.monitor.metricRelabelings | nindent 6 }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName }} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} - {{- if .Values.prometheus.monitor.relabelings }} - relabelings: - {{- toYaml .Values.prometheus.monitor.relabelings | nindent 8 }} - {{- end }} - {{- if .Values.prometheus.monitor.scheme }} - scheme: {{ .Values.prometheus.monitor.scheme }} - {{- end }} - {{- if .Values.prometheus.monitor.tlsConfig }} - tlsConfig: - {{- toYaml .Values.prometheus.monitor.tlsConfig | nindent 8 }} - {{- end }} - {{- if .Values.prometheus.monitor.bearerTokenFile }} - bearerTokenFile: {{ .Values.prometheus.monitor.bearerTokenFile }} - {{- end }} - {{- with .Values.prometheus.monitor.bearerTokenSecret }} - bearerTokenSecret: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- if .Values.selfMonitor.enabled }} - - port: metrics - {{- if .Values.prometheus.monitor.interval }} - interval: {{ .Values.prometheus.monitor.interval }} - {{- end }} - {{- if .Values.prometheus.monitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.prometheus.monitor.scrapeTimeout }} - {{- end }} - {{- if .Values.prometheus.monitor.proxyUrl }} - proxyUrl: {{ .Values.prometheus.monitor.proxyUrl}} - {{- end }} - {{- if .Values.prometheus.monitor.enableHttp2 }} - enableHttp2: {{ .Values.prometheus.monitor.enableHttp2}} - {{- end }} - {{- if .Values.prometheus.monitor.honorLabels }} - honorLabels: true - {{- end }} - {{- if .Values.prometheus.monitor.relabelings }} - relabelings: - {{- toYaml .Values.prometheus.monitor.relabelings | nindent 8 }} - {{- end }} - {{- if .Values.prometheus.monitor.scheme }} - scheme: {{ .Values.prometheus.monitor.scheme }} - {{- end }} - {{- if .Values.prometheus.monitor.tlsConfig }} - tlsConfig: - {{- toYaml .Values.prometheus.monitor.tlsConfig | nindent 8 }} - {{- end }} - {{- if .Values.prometheus.monitor.bearerTokenFile }} - bearerTokenFile: {{ .Values.prometheus.monitor.bearerTokenFile }} - {{- end }} - {{- with .Values.prometheus.monitor.bearerTokenSecret }} - bearerTokenSecret: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/stsdiscovery-role.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/stsdiscovery-role.yaml deleted file mode 100644 index 489de14..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/stsdiscovery-role.yaml +++ /dev/null @@ -1,26 +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: - {{- include "kube-state-metrics.labels" . | indent 4 }} -rules: -- apiGroups: - - "" - resources: - - pods - verbs: - - get -- apiGroups: - - apps - resourceNames: - - {{ template "kube-state-metrics.fullname" . }} - resources: - - statefulsets - verbs: - - get - - list - - watch -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/stsdiscovery-rolebinding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/stsdiscovery-rolebinding.yaml deleted file mode 100644 index 73b37a4..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/stsdiscovery-rolebinding.yaml +++ /dev/null @@ -1,17 +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: - {{- include "kube-state-metrics.labels" . | indent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: stsdiscovery-{{ template "kube-state-metrics.fullname" . }} -subjects: - - kind: ServiceAccount - name: {{ template "kube-state-metrics.serviceAccountName" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/verticalpodautoscaler.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/verticalpodautoscaler.yaml deleted file mode 100644 index f46305b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/templates/verticalpodautoscaler.yaml +++ /dev/null @@ -1,44 +0,0 @@ -{{- if and (.Capabilities.APIVersions.Has "autoscaling.k8s.io/v1") (.Values.verticalPodAutoscaler.enabled) }} -apiVersion: autoscaling.k8s.io/v1 -kind: VerticalPodAutoscaler -metadata: - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - {{- include "kube-state-metrics.labels" . | indent 4 }} -spec: - {{- with .Values.verticalPodAutoscaler.recommenders }} - recommenders: - {{- toYaml . | nindent 4 }} - {{- end }} - resourcePolicy: - containerPolicies: - - containerName: {{ template "kube-state-metrics.name" . }} - {{- with .Values.verticalPodAutoscaler.controlledResources }} - controlledResources: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- if .Values.verticalPodAutoscaler.controlledValues }} - controlledValues: {{ .Values.verticalPodAutoscaler.controlledValues }} - {{- end }} - {{- if .Values.verticalPodAutoscaler.maxAllowed }} - maxAllowed: - {{ toYaml .Values.verticalPodAutoscaler.maxAllowed | nindent 8 }} - {{- end }} - {{- if .Values.verticalPodAutoscaler.minAllowed }} - minAllowed: - {{ toYaml .Values.verticalPodAutoscaler.minAllowed | nindent 8 }} - {{- end }} - targetRef: - apiVersion: apps/v1 - {{- if .Values.autosharding.enabled }} - kind: StatefulSet - {{- else }} - kind: Deployment - {{- end }} - name: {{ template "kube-state-metrics.fullname" . }} - {{- with .Values.verticalPodAutoscaler.updatePolicy }} - updatePolicy: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/values.yaml deleted file mode 100644 index bc8ee28..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kube-state-metrics/values.yaml +++ /dev/null @@ -1,491 +0,0 @@ -# Default values for kube-state-metrics. -prometheusScrape: true -image: - registry: docker.io - repository: rancher/mirrored-kube-state-metrics-kube-state-metrics - tag: v2.10.1 - sha: "" - pullPolicy: IfNotPresent - -imagePullSecrets: [] -# - name: "image-pull-secret" - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - - # To help compatibility with other charts which use global.imagePullSecrets. - # Allow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style). - # global: - # imagePullSecrets: - # - name: pullSecret1 - # - name: pullSecret2 - # or - # global: - # imagePullSecrets: - # - pullSecret1 - # - pullSecret2 - imagePullSecrets: [] - # - # Allow parent charts to override registry hostname - imageRegistry: "" - -# 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 - -# Change the deployment strategy when autosharding is disabled. -# ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy -# The default is "RollingUpdate" as per Kubernetes defaults. -# During a release, 'RollingUpdate' can lead to two running instances for a short period of time while 'Recreate' can create a small gap in data. -# updateStrategy: Recreate - -# Number of old history to retain to allow rollback -# Default Kubernetes value is set to 10 -revisionHistoryLimit: 10 - -# 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: "" - # Only allow access to the loadBalancerIP from these IPs - loadBalancerSourceRanges: [] - clusterIP: "" - annotations: {} - -## Additional labels to add to all resources -customLabels: {} - # app: kube-state-metrics - -## Override selector labels -selectorOverride: {} - -## set to true to add the release label so scraping of the servicemonitor with kube-prometheus-stack works out of the box -releaseLabel: false - -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 - - # Add permissions for CustomResources' apiGroups in Role/ClusterRole. Should be used in conjunction with Custom Resource State Metrics configuration - # Example: - # - apiGroups: ["monitoring.coreos.com"] - # resources: ["prometheuses"] - # verbs: ["list", "watch"] - extraRules: [] - -# Configure kube-rbac-proxy. When enabled, creates one kube-rbac-proxy container per exposed HTTP endpoint (metrics and telemetry if enabled). -# The requests are served through the same service but requests are then HTTPS. -kubeRBACProxy: - enabled: false - image: - repository: rancher/mirrored-kube-rbac-proxy - tag: v0.14.0 - sha: "" - pullPolicy: IfNotPresent - - # List of additional cli arguments to configure kube-rbac-prxy - # for example: --tls-cipher-suites, --log-file, etc. - # all the possible args can be found here: https://github.com/brancz/kube-rbac-proxy#usage - extraArgs: [] - - ## Specify security settings for a Container - ## Allows overrides and additional options compared to (Pod) securityContext - ## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container - containerSecurityContext: - readOnlyRootFilesystem: true - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - - 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 - - ## volumeMounts enables mounting custom volumes in rbac-proxy containers - ## Useful for TLS certificates and keys - volumeMounts: [] - # - mountPath: /etc/tls - # name: kube-rbac-proxy-tls - # readOnly: 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 - annotations: {} - additionalLabels: {} - namespace: "" - namespaceSelector: [] - jobLabel: "" - targetLabels: [] - podTargetLabels: [] - interval: "" - ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - ## - sampleLimit: 0 - - ## TargetLimit defines a limit on the number of scraped targets that will be accepted. - ## - targetLimit: 0 - - ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelLimit: 0 - - ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelNameLengthLimit: 0 - - ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelValueLengthLimit: 0 - scrapeTimeout: "" - proxyUrl: "" - ## Whether to enable HTTP2 for servicemonitor - # enableHttp2: false - selectorOverride: {} - honorLabels: false - metricRelabelings: [] - relabelings: [] - scheme: "" - ## File to read bearer token for scraping targets - bearerTokenFile: "" - ## 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 - bearerTokenSecret: {} - # name: secret-name - # key: key-name - tlsConfig: {} - -## Specify if a Pod Security Policy for kube-state-metrics must be created -## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/ -## -podSecurityPolicy: - 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: [] - -## Configure network policy for kube-state-metrics -networkPolicy: - enabled: false - # networkPolicy.flavor -- Flavor of the network policy to use. - # Can be: - # * kubernetes for networking.k8s.io/v1/NetworkPolicy - # * cilium for cilium.io/v2/CiliumNetworkPolicy - flavor: kubernetes - - ## Configure the cilium network policy kube-apiserver selector - # cilium: - # kubeApiServerSelector: - # - toEntities: - # - kube-apiserver - - # egress: - # - {} - # ingress: - # - {} - # podSelector: - # matchLabels: - # app.kubernetes.io/name: kube-state-metrics - -securityContext: - enabled: true - runAsGroup: 65534 - runAsUser: 65534 - fsGroup: 65534 - runAsNonRoot: true - seccompProfile: - type: RuntimeDefault - -## Specify security settings for a Container -## Allows overrides and additional options compared to (Pod) securityContext -## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container -containerSecurityContext: - readOnlyRootFilesystem: true - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - -## 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: [] - -## Topology spread constraints for pod assignment -## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ -topologySpreadConstraints: [] - -# Annotations to be added to the deployment/statefulset -annotations: {} - -# 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: {} - -# Comma-separated list of metrics to be exposed. -# This list comprises of exact metric names and/or regex patterns. -# The allowlist and denylist are mutually exclusive. -metricAllowlist: [] - -# Comma-separated list of metrics not to be enabled. -# This list comprises of exact metric names and/or regex patterns. -# The allowlist and denylist are mutually exclusive. -metricDenylist: [] - -# Comma-separated list of additional Kubernetes label keys that will be used in the resource's -# labels metric. By default the metric contains only name and namespace labels. -# To include additional labels, provide a list of resource names in their plural form and Kubernetes -# label keys you would like to allow for them (Example: '=namespaces=[k8s-label-1,k8s-label-n,...],pods=[app],...)'. -# A single '*' can be provided per resource instead to allow any labels, but that has -# severe performance implications (Example: '=pods=[*]'). -metricLabelsAllowlist: [] - # - namespaces=[k8s-label-1,k8s-label-n] - -# Comma-separated list of Kubernetes annotations keys that will be used in the resource' -# labels metric. By default the metric contains only name and namespace labels. -# To include additional annotations provide a list of resource names in their plural form and Kubernetes -# annotation keys you would like to allow for them (Example: '=namespaces=[kubernetes.io/team,...],pods=[kubernetes.io/team],...)'. -# A single '*' can be provided per resource instead to allow any annotations, but that has -# severe performance implications (Example: '=pods=[*]'). -metricAnnotationsAllowList: [] - # - pods=[k8s-annotation-1,k8s-annotation-n] - -# Available collectors for kube-state-metrics. -# By default, all available resources are enabled, comment out to disable. -collectors: - - certificatesigningrequests - - configmaps - - cronjobs - - daemonsets - - deployments - - endpoints - - horizontalpodautoscalers - - ingresses - - jobs - - leases - - limitranges - - mutatingwebhookconfigurations - - namespaces - - networkpolicies - - nodes - - persistentvolumeclaims - - persistentvolumes - - poddisruptionbudgets - - pods - - replicasets - - replicationcontrollers - - resourcequotas - - secrets - - services - - statefulsets - - storageclasses - - validatingwebhookconfigurations - - volumeattachments - -# Enabling kubeconfig will pass the --kubeconfig argument to the container -kubeconfig: - enabled: false - # base64 encoded kube-config file - secret: - -# Enabling support for customResourceState, will create a configMap including your config that will be read from kube-state-metrics -customResourceState: - enabled: false - # Add (Cluster)Role permissions to list/watch the customResources defined in the config to rbac.extraRules - config: {} - -# Enable only the release namespace for collecting resources. By default all namespaces are collected. -# If releaseNamespace and namespaces are both set a merged list will be collected. -releaseNamespace: false - -# Comma-separated list(string) or yaml list of namespaces to be enabled for collecting resources. By default all namespaces are collected. -namespaces: "" - -# Comma-separated list of namespaces not to be enabled. If namespaces and namespaces-denylist are both set, -# only namespaces that are excluded in namespaces-denylist will be used. -namespacesDenylist: "" - -## 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 overridden -# If you set telemetryNodePort, you must also set service.type to NodePort -selfMonitor: - enabled: false - # telemetryHost: 0.0.0.0 - # telemetryPort: 8081 - # telemetryNodePort: 0 - -# Enable vertical pod autoscaler support for kube-state-metrics -verticalPodAutoscaler: - enabled: false - - # Recommender responsible for generating recommendation for the object. - # List should be empty (then the default recommender will generate the recommendation) - # or contain exactly one recommender. - # recommenders: [] - # - name: custom-recommender-performance - - # List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory - controlledResources: [] - # Specifies which resource values should be controlled: RequestsOnly or RequestsAndLimits. - # controlledValues: RequestsAndLimits - - # Define the max allowed resources for the pod - maxAllowed: {} - # cpu: 200m - # memory: 100Mi - # Define the min allowed resources for the pod - minAllowed: {} - # cpu: 200m - # memory: 100Mi - - # updatePolicy: - # Specifies minimal number of replicas which need to be alive for VPA Updater to attempt pod eviction - # minReplicas: 1 - # Specifies whether recommended updates are applied when a Pod is started and whether recommended updates - # are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "Auto". - # updateMode: Auto - -# volumeMounts are used to add custom volume mounts to deployment. -# See example below -volumeMounts: [] -# - mountPath: /etc/config -# name: config-volume - -# volumes are used to add custom volumes to deployment -# See example below -volumes: [] -# - configMap: -# name: cm-for-volume -# name: config-volume - -# Extra manifests to deploy as an array -extraManifests: [] - # - apiVersion: v1 - # kind: ConfigMap - # metadata: - # labels: - # name: prometheus-extra - # data: - # extra-data: "value" - -## Containers allows injecting additional containers. -containers: [] - # - name: crd-init - # image: kiwigrid/k8s-sidecar:latest - -## InitContainers allows injecting additional initContainers. -initContainers: [] - # - name: crd-sidecar - # image: kiwigrid/k8s-sidecar:latest - -## Liveness probe -## -livenessProbe: - failureThreshold: 3 - httpGet: - httpHeaders: [] - scheme: http - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 - -## Readiness probe -## -readinessProbe: - failureThreshold: 3 - httpGet: - httpHeaders: [] - scheme: http - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 5 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/Chart.yaml deleted file mode 100644 index ad9fba2..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: kubeAdmControllerManager -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmControllerManager/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/Chart.yaml deleted file mode 100644 index d144d3e..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: kubeAdmEtcd -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmEtcd/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/Chart.yaml deleted file mode 100644 index a1222c4..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: kubeAdmProxy -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmProxy/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/Chart.yaml deleted file mode 100644 index 78a4415..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: kubeAdmScheduler -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/kubeAdmScheduler/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/.helmignore deleted file mode 100644 index f0c1319..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/Chart.yaml deleted file mode 100644 index d067725..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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.10.0 -description: A Helm chart for k8s prometheus adapter -home: https://github.com/kubernetes-sigs/prometheus-adapter -keywords: -- hpa -- metrics -- prometheus -- adapter -kubeVersion: '>=1.26.0-0' -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/kubernetes-sigs/prometheus-adapter -version: 4.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/README.md deleted file mode 100644 index d77bb0c..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/README.md +++ /dev/null @@ -1,160 +0,0 @@ -# Prometheus Adapter - -Installs the [Prometheus Adapter](https://github.com/kubernetes-sigs/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 Helm Repositories 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 Helm Chart - -```console -helm install [RELEASE_NAME] prometheus-community/prometheus-adapter -``` - -_See [configuration](#configuration) below._ - -_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._ - -## Uninstall Helm Chart - -```console -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._ - -## Upgrading Helm Chart - -```console -helm upgrade [RELEASE_NAME] [CHART] --install -``` - -_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._ - -### To 4.2.0 - -Readiness and liveness probes are now fully configurable through values `readinessProbe` and `livenessProbe`. The previous values have been kept as defaults. - -### To 4.0.0 - -Previously, security context of the container was set directly in the deployment template. This release makes it configurable through the new configuration variable `securityContext` whilst keeping the previously set values as defaults. Furthermore, previous variable `runAsUser` is now set in `securityContext` and is not used any longer. Please, use `securityContext.runAsUser` instead. In the same security context, `seccompProfile` has been enabled and set to type `RuntimeDefault`. - -### To 3.0.0 - -Due to a change in deployment labels, the upgrade requires `helm upgrade --force` in order to re-create the deployment. - -## 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 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/kubernetes-sigs/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 by (<<.GroupBy>>) ( - rate(container_cpu_usage_seconds_total{container!="",<<.LabelMatchers>>}[3m]) - ) - nodeQuery: | - sum by (<<.GroupBy>>) ( - rate(node_cpu_seconds_total{mode!="idle",mode!="iowait",mode!="steal",<<.LabelMatchers>>}[3m]) - ) - resources: - overrides: - node: - resource: node - namespace: - resource: namespace - pod: - resource: pod - containerLabel: container - memory: - containerQuery: | - sum by (<<.GroupBy>>) ( - avg_over_time(container_memory_working_set_bytes{container!="",<<.LabelMatchers>>}[3m]) - ) - nodeQuery: | - sum by (<<.GroupBy>>) ( - avg_over_time(node_memory_MemTotal_bytes{<<.LabelMatchers>>}[3m]) - - - avg_over_time(node_memory_MemAvailable_bytes{<<.LabelMatchers>>}[3m]) - ) - resources: - overrides: - node: - 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/NOTES.txt b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/NOTES.txt deleted file mode 100644 index b7b9b99..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/_helpers.tpl deleted file mode 100644 index edbb829..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/_helpers.tpl +++ /dev/null @@ -1,113 +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 -}} - -{{/* -Allow the release namespace to be overridden for multi-namespace deployments in combined charts -*/}} -{{- define "k8s-prometheus-adapter.namespace" -}} -{{- default .Release.Namespace .Values.namespaceOverride -}} -{{- 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 -}} - -{{/* -Generate basic labels -*/}} -{{- define "k8s-prometheus-adapter.labels" }} -helm.sh/chart: {{ include "k8s-prometheus-adapter.chart" . }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/component: metrics -app.kubernetes.io/part-of: {{ template "k8s-prometheus-adapter.name" . }} -{{- include "k8s-prometheus-adapter.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -{{- if .Values.customLabels }} -{{ toYaml .Values.customLabels }} -{{- end }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "k8s-prometheus-adapter.selectorLabels" }} -app.kubernetes.io/name: {{ include "k8s-prometheus-adapter.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- 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 -}} - -{{/* Get Policy API Version */}} -{{- define "k8s-prometheus-adapter.pdb.apiVersion" -}} -{{- if and (.Capabilities.APIVersions.Has "policy/v1") (semverCompare ">= 1.21-0" .Capabilities.KubeVersion.Version) -}} - {{- print "policy/v1" -}} -{{- else -}} - {{- print "policy/v1beta1" -}} -{{- end -}} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/certmanager.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/certmanager.yaml deleted file mode 100644 index 4e32c96..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/certmanager.yaml +++ /dev/null @@ -1,76 +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 - namespace: {{ include "k8s-prometheus-adapter.namespace" . }} - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} -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 - namespace: {{ include "k8s-prometheus-adapter.namespace" . }} - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} -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 - namespace: {{ include "k8s-prometheus-adapter.namespace" . }} - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} -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 - namespace: {{ include "k8s-prometheus-adapter.namespace" . }} - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} -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" . }}.{{ include "k8s-prometheus-adapter.namespace" . }} - - {{ template "k8s-prometheus-adapter.fullname" . }}.{{ include "k8s-prometheus-adapter.namespace" . }}.svc -{{- end -}} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/cluster-role-binding-auth-delegator.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/cluster-role-binding-auth-delegator.yaml deleted file mode 100644 index 6701e6b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/cluster-role-binding-auth-delegator.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - 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: {{ include "k8s-prometheus-adapter.namespace" . | quote }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/cluster-role-binding-resource-reader.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/cluster-role-binding-resource-reader.yaml deleted file mode 100644 index 67efd2a..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/cluster-role-binding-resource-reader.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - 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: {{ include "k8s-prometheus-adapter.namespace" . | quote }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/cluster-role-resource-reader.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/cluster-role-resource-reader.yaml deleted file mode 100644 index 2c690a0..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/cluster-role-resource-reader.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - name: {{ template "k8s-prometheus-adapter.name" . }}-resource-reader -rules: -- apiGroups: - - "" - resources: - - namespaces - - pods - - services - - configmaps - verbs: - - get - - list - - watch -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/configmap.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/configmap.yaml deleted file mode 100644 index 17f415d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/configmap.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- if not .Values.rules.existing -}} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "k8s-prometheus-adapter.fullname" . }} - namespace: {{ include "k8s-prometheus-adapter.namespace" . }} - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} -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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/custom-metrics-apiservice.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/custom-metrics-apiservice.yaml deleted file mode 100644 index 8b7b4e5..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/custom-metrics-apiservice.yaml +++ /dev/null @@ -1,34 +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 or .Values.certManager.enabled .Values.customAnnotations }} - annotations: - certmanager.k8s.io/inject-ca-from: {{ printf "%s/%s-root-cert" (include "k8s-prometheus-adapter.namespace" .) (include "k8s-prometheus-adapter.fullname" .) | quote }} - cert-manager.io/inject-ca-from: {{ printf "%s/%s-root-cert" (include "k8s-prometheus-adapter.namespace" .) (include "k8s-prometheus-adapter.fullname" .) | quote }} - {{- if .Values.customAnnotations }} - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} -{{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - name: v1beta1.custom.metrics.k8s.io -spec: - service: - name: {{ template "k8s-prometheus-adapter.fullname" . }} - namespace: {{ include "k8s-prometheus-adapter.namespace" . | quote }} - {{- if .Values.tls.enable }} - caBundle: {{ b64enc .Values.tls.ca }} - {{- end }} - group: custom.metrics.k8s.io - version: v1beta1 - {{- if not (or .Values.tls.enable .Values.certManager.enabled) }} - insecureSkipTLSVerify: true - {{- end }} - groupPriorityMinimum: 100 - versionPriority: 100 -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/custom-metrics-cluster-role-binding-hpa.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/custom-metrics-cluster-role-binding-hpa.yaml deleted file mode 100644 index 0cc6920..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/custom-metrics-cluster-role-binding-hpa.yaml +++ /dev/null @@ -1,24 +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: - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - 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: {{ include "k8s-prometheus-adapter.namespace" . | quote }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/custom-metrics-cluster-role.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/custom-metrics-cluster-role.yaml deleted file mode 100644 index 4aa15ff..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/custom-metrics-cluster-role.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if and .Values.rbac.create (or .Values.rules.default .Values.rules.custom) -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - name: {{ template "k8s-prometheus-adapter.name" . }}-server-resources -rules: -- apiGroups: - - custom.metrics.k8s.io - resources: ["*"] - verbs: ["*"] -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/deployment.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/deployment.yaml deleted file mode 100644 index a7ea331..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/deployment.yaml +++ /dev/null @@ -1,143 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - {{- if or .Values.customAnnotations .Values.deploymentAnnotations }} - annotations: - {{- with .Values.customAnnotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.deploymentAnnotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - name: {{ template "k8s-prometheus-adapter.fullname" . }} - namespace: {{ include "k8s-prometheus-adapter.namespace" . }} -spec: - replicas: {{ .Values.replicas }} - strategy: {{ toYaml .Values.strategy | nindent 4 }} - selector: - matchLabels: - {{- include "k8s-prometheus-adapter.selectorLabels" . | indent 6 }} - template: - metadata: - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 8 }} - {{- 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 . | nindent 8 }} - {{- end }} - {{- with .Values.customAnnotations }} - {{- toYaml . | 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 }} - {{- with .Values.env }} - env: - {{- toYaml . | nindent 8 }} - {{- end }} - 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 - - --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 - {{- with .Values.livenessProbe }} - livenessProbe: - {{- toYaml . | nindent 10 }} - {{- end }} - {{- with .Values.readinessProbe }} - readinessProbe: - {{- toYaml . | nindent 10 }} - {{- end }} - {{- if .Values.resources }} - resources: - {{- toYaml .Values.resources | nindent 10 }} - {{- end }} - {{- with .Values.dnsConfig }} - dnsConfig: - {{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.securityContext }} - securityContext: - {{- toYaml . | nindent 10 }} - {{- end }} - 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 }} - topologySpreadConstraints: - {{- toYaml .Values.topologySpreadConstraints | nindent 8 }} - priorityClassName: {{ .Values.priorityClassName }} - {{- if .Values.podSecurityContext }} - securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} - {{- end }} - 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/external-metrics-apiservice.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/external-metrics-apiservice.yaml deleted file mode 100644 index 21339af..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/external-metrics-apiservice.yaml +++ /dev/null @@ -1,34 +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 or .Values.certManager.enabled .Values.customAnnotations }} - annotations: - certmanager.k8s.io/inject-ca-from: {{ printf "%s/%s-root-cert" (include "k8s-prometheus-adapter.namespace" .) (include "k8s-prometheus-adapter.fullname" .) | quote }} - cert-manager.io/inject-ca-from: {{ printf "%s/%s-root-cert" (include "k8s-prometheus-adapter.namespace" .) (include "k8s-prometheus-adapter.fullname" .) | quote }} - {{- if .Values.customAnnotations }} - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} -{{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - name: v1beta1.external.metrics.k8s.io -spec: - service: - name: {{ template "k8s-prometheus-adapter.fullname" . }} - namespace: {{ include "k8s-prometheus-adapter.namespace" . | quote }} - {{- if .Values.tls.enable }} - caBundle: {{ b64enc .Values.tls.ca }} - {{- end }} - group: external.metrics.k8s.io - version: v1beta1 - {{- if not (or .Values.tls.enable .Values.certManager.enabled) }} - insecureSkipTLSVerify: true - {{- end }} - groupPriorityMinimum: 100 - versionPriority: 100 -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/external-metrics-cluster-role-binding-hpa.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/external-metrics-cluster-role-binding-hpa.yaml deleted file mode 100644 index 05547bd..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/external-metrics-cluster-role-binding-hpa.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.rbac.create .Values.rules.external -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/external-metrics-cluster-role.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/external-metrics-cluster-role.yaml deleted file mode 100644 index 212ea78..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/external-metrics-cluster-role.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if and .Values.rbac.create .Values.rules.external -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - name: {{ template "k8s-prometheus-adapter.name" . }}-external-metrics -rules: -- apiGroups: - - "external.metrics.k8s.io" - resources: - - "*" - verbs: - - list - - get - - watch -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/pdb.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/pdb.yaml deleted file mode 100644 index 205761a..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/pdb.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- if .Values.podDisruptionBudget.enabled }} -apiVersion: {{ include "k8s-prometheus-adapter.pdb.apiVersion" . }} -kind: PodDisruptionBudget -metadata: - name: {{ template "k8s-prometheus-adapter.fullname" . }} - namespace: {{ include "k8s-prometheus-adapter.namespace" . }} - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} -spec: - {{- if .Values.podDisruptionBudget.minAvailable }} - minAvailable: {{ .Values.podDisruptionBudget.minAvailable }} - {{- end }} - {{- if .Values.podDisruptionBudget.maxUnavailable }} - maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }} - {{- end }} - selector: - matchLabels: - {{- include "k8s-prometheus-adapter.selectorLabels" . | indent 6 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/psp.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/psp.yaml deleted file mode 100644 index fded5a7..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/psp.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if and (or .Values.global.cattle.psp.enabled .Values.psp.create) (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "k8s-prometheus-adapter.fullname" . }} - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} -spec: - {{- if .Values.hostNetwork.enabled }} - hostNetwork: true - hostPorts: - - min: {{ .Values.listenPort }} - max: {{ .Values.listenPort }} - {{- 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: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - 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: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - 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: {{ include "k8s-prometheus-adapter.namespace" . | quote }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/resource-metrics-apiservice.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/resource-metrics-apiservice.yaml deleted file mode 100644 index 0cc9fff..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/resource-metrics-apiservice.yaml +++ /dev/null @@ -1,34 +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 or .Values.certManager.enabled .Values.customAnnotations }} - annotations: - certmanager.k8s.io/inject-ca-from: {{ printf "%s/%s-root-cert" (include "k8s-prometheus-adapter.namespace" .) (include "k8s-prometheus-adapter.fullname" .) | quote }} - cert-manager.io/inject-ca-from: {{ printf "%s/%s-root-cert" (include "k8s-prometheus-adapter.namespace" .) (include "k8s-prometheus-adapter.fullname" .) | quote }} - {{- if .Values.customAnnotations }} - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} -{{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - name: v1beta1.metrics.k8s.io -spec: - service: - name: {{ template "k8s-prometheus-adapter.fullname" . }} - namespace: {{ include "k8s-prometheus-adapter.namespace" . | quote }} - {{- if .Values.tls.enable }} - caBundle: {{ b64enc .Values.tls.ca }} - {{- end }} - group: metrics.k8s.io - version: v1beta1 - {{- if not (or .Values.tls.enable .Values.certManager.enabled) }} - insecureSkipTLSVerify: true - {{- end }} - groupPriorityMinimum: 100 - versionPriority: 100 -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/resource-metrics-cluster-role-binding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/resource-metrics-cluster-role-binding.yaml deleted file mode 100644 index 3c247e4..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/resource-metrics-cluster-role-binding.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.rbac.create .Values.rules.resource -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - 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: {{ include "k8s-prometheus-adapter.namespace" . | quote }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/resource-metrics-cluster-role.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/resource-metrics-cluster-role.yaml deleted file mode 100644 index 73d8953..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/resource-metrics-cluster-role.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- if and .Values.rbac.create .Values.rules.resource -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - name: {{ template "k8s-prometheus-adapter.name" . }}-metrics -rules: -- apiGroups: - - "" - resources: - - pods - - nodes - - nodes/stats - verbs: - - get - - list - - watch -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/role-binding-auth-reader.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/role-binding-auth-reader.yaml deleted file mode 100644 index d3c77c1..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/role-binding-auth-reader.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - 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: {{ include "k8s-prometheus-adapter.namespace" . | quote }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/secret.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/secret.yaml deleted file mode 100644 index 3e7e888..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/secret.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.tls.enable -}} -apiVersion: v1 -kind: Secret -metadata: - {{- if .Values.customAnnotations }} - annotations: - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - name: {{ template "k8s-prometheus-adapter.fullname" . }} - namespace: {{ include "k8s-prometheus-adapter.namespace" . }} -type: kubernetes.io/tls -data: - tls.crt: {{ b64enc .Values.tls.certificate }} - tls.key: {{ b64enc .Values.tls.key }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/service.yaml deleted file mode 100644 index ddac37c..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/service.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - {{- if or .Values.service.annotations .Values.customAnnotations }} - annotations: - {{- if .Values.service.annotations }} - {{ toYaml .Values.service.annotations | indent 4 }} - {{- end }} - {{- if .Values.customAnnotations }} - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} - {{- end }} - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - name: {{ template "k8s-prometheus-adapter.fullname" . }} - namespace: {{ include "k8s-prometheus-adapter.namespace" . }} -spec: - ports: - - port: {{ .Values.service.port }} - protocol: TCP - targetPort: https - selector: - {{- include "k8s-prometheus-adapter.selectorLabels" . | indent 4 }} - type: {{ .Values.service.type }} - {{- if .Values.service.clusterIP }} - clusterIP: {{ .Values.service.clusterIP }} - {{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/serviceaccount.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/serviceaccount.yaml deleted file mode 100644 index 30a169a..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/templates/serviceaccount.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if .Values.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - {{- include "k8s-prometheus-adapter.labels" . | indent 4 }} - name: {{ template "k8s-prometheus-adapter.serviceAccountName" . }} - namespace: {{ include "k8s-prometheus-adapter.namespace" . }} -{{- if or .Values.serviceAccount.annotations .Values.customAnnotations }} - annotations: - {{- if .Values.serviceAccount.annotations }} - {{- toYaml .Values.serviceAccount.annotations | nindent 4 }} - {{- end }} - {{- if .Values.customAnnotations }} - {{- toYaml .Values.customAnnotations | nindent 4 }} - {{- end }} -{{- end }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/values.yaml deleted file mode 100644 index a1445a2..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-adapter/values.yaml +++ /dev/null @@ -1,277 +0,0 @@ -# Default values for k8s-prometheus-adapter.. -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - -affinity: {} - -topologySpreadConstraints: [] - -image: - repository: rancher/mirrored-prometheus-adapter-prometheus-adapter - tag: v0.12.0 - pullPolicy: IfNotPresent - -logLevel: 4 - -metricsRelistInterval: 1m - -listenPort: 6443 - -nodeSelector: {} - -priorityClassName: "" - -## Override the release namespace (for multi-namespace deployments in combined charts) -namespaceOverride: "" - -## Additional annotations to add to all resources -customAnnotations: {} - # role: custom-metrics - -## Additional labels to add to all resources -customLabels: {} - # monitoring: prometheus-adapter - -# Url to access prometheus -prometheus: - # Value is templated - url: http://prometheus.default.svc - port: 9090 - path: "" - -replicas: 1 - -# k8s 1.21 needs fsGroup to be set for non root deployments -# ref: https://github.com/kubernetes/kubernetes/issues/70679 -podSecurityContext: - fsGroup: 10001 - -# SecurityContext of the container -# ref. https://kubernetes.io/docs/tasks/configure-pod-container/security-context -securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: ["all"] - readOnlyRootFilesystem: true - runAsNonRoot: true - runAsUser: 10001 - seccompProfile: - type: RuntimeDefault - -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: - # 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: {} - -# 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 - -# Configure liveness probe -# https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#Probe -livenessProbe: - httpGet: - path: /healthz - port: https - scheme: HTTPS - initialDelaySeconds: 30 - timeoutSeconds: 5 - -# Configure readiness probe -readinessProbe: - httpGet: - path: /healthz - port: https - scheme: HTTPS - initialDelaySeconds: 30 - timeoutSeconds: 5 - -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 by (<<.GroupBy>>) ( - # rate(container_cpu_usage_seconds_total{container!="",<<.LabelMatchers>>}[3m]) - # ) - # nodeQuery: | - # sum by (<<.GroupBy>>) ( - # rate(node_cpu_seconds_total{mode!="idle",mode!="iowait",mode!="steal",<<.LabelMatchers>>}[3m]) - # ) - # resources: - # overrides: - # node: - # resource: node - # namespace: - # resource: namespace - # pod: - # resource: pod - # containerLabel: container - # memory: - # containerQuery: | - # sum by (<<.GroupBy>>) ( - # avg_over_time(container_memory_working_set_bytes{container!="",<<.LabelMatchers>>}[3m]) - # ) - # nodeQuery: | - # sum by (<<.GroupBy>>) ( - # avg_over_time(node_memory_MemTotal_bytes{<<.LabelMatchers>>}[3m]) - # - - # avg_over_time(node_memory_MemAvailable_bytes{<<.LabelMatchers>>}[3m]) - # ) - # resources: - # overrides: - # node: - # resource: node - # namespace: - # resource: namespace - # pod: - # resource: pod - # containerLabel: container - # window: 3m - -service: - annotations: {} - port: 443 - type: ClusterIP - # clusterIP: 1.2.3.4 - -tls: - enable: false - ca: |- - # Public CA file that signed the APIService - key: |- - # Private key of the APIService - certificate: |- - # Public key of the APIService - -# Set environment variables from secrets, configmaps or by setting them as name/value -env: [] - # - name: TMP_DIR - # value: /tmp - # - name: PASSWORD - # valueFrom: - # secretKeyRef: - # name: mysecret - # key: password - # optional: false - -# 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: {} - -# Annotations added to the deployment -deploymentAnnotations: {} - -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 - -# Deployment strategy type -strategy: - type: RollingUpdate - rollingUpdate: - maxUnavailable: 25% - maxSurge: 25% - -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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/.helmignore deleted file mode 100644 index f0c1319..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/Chart.yaml deleted file mode 100644 index 9130cbc..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/Chart.yaml +++ /dev/null @@ -1,25 +0,0 @@ -annotations: - artifacthub.io/license: Apache-2.0 - artifacthub.io/links: |- - - name: Chart Source - url: https://github.com/prometheus-community/helm-charts -apiVersion: v2 -appVersion: 1.7.0 -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 -- email: zanhsieh@gmail.com - name: zanhsieh -- email: rootsandtrees@posteo.de - name: zeritti -name: prometheus-node-exporter -sources: -- https://github.com/prometheus/node_exporter/ -type: application -version: 4.30.3 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/README.md deleted file mode 100644 index 149b982..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/README.md +++ /dev/null @@ -1,97 +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) daemonset on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. - -## Get Repository 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 install [RELEASE_NAME] prometheus-community/prometheus-node-exporter -``` - -_See [configuration](#configuring) below._ - -_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._ - -## Uninstall Chart - -```console -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._ - -## Upgrading Chart - -```console -helm upgrade [RELEASE_NAME] prometheus-community/prometheus-node-exporter --install -``` - -_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._ - -### 3.x to 4.x - -Starting from version 4.0.0, the `node exporter` chart is using the [Kubernetes recommended labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/). Therefore you have to delete the daemonset before you upgrade. - -```console -kubectl delete daemonset -l app=prometheus-node-exporter -helm upgrade -i prometheus-node-exporter prometheus-community/prometheus-node-exporter -``` - -If you use your own custom [ServiceMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitor) or [PodMonitor](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#podmonitor), please ensure to upgrade their `selector` fields accordingly to the new labels. - -### From 2.x to 3.x - -Change the following: - -```yaml -hostRootFsMount: true -``` - -to: - -```yaml -hostRootFsMount: - enabled: true - mountPropagation: HostToContainer -``` - -## 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 show values prometheus-community/prometheus-node-exporter -``` - -### kube-rbac-proxy - -You can enable `prometheus-node-exporter` endpoint protection using `kube-rbac-proxy`. By setting `kubeRBACProxy.enabled: true`, this chart will deploy a RBAC proxy container protecting the node-exporter endpoint. -To authorize access, authenticate your requests (via a `ServiceAccount` for example) with a `ClusterRole` attached such as: - -```yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: prometheus-node-exporter-read -rules: - - apiGroups: [ "" ] - resources: ["services/node-exporter-prometheus-node-exporter"] - verbs: - - get -``` - -See [kube-rbac-proxy examples](https://github.com/brancz/kube-rbac-proxy/tree/master/examples/resource-attributes) for more details. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/NOTES.txt b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/NOTES.txt deleted file mode 100644 index 8c5391f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/NOTES.txt +++ /dev/null @@ -1,29 +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.kubernetes.io/name={{ template "prometheus-node-exporter.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - echo "Visit http://127.0.0.1:{{ .Values.service.port }} to use your application" - kubectl port-forward --namespace {{ template "prometheus-node-exporter.namespace" . }} $POD_NAME {{ .Values.service.port }} -{{- end }} - -{{- if .Values.kubeRBACProxy.enabled}} - -kube-rbac-proxy endpoint protections is enabled: -- Metrics endpoints is now HTTPS -- Ensure that the client authenticates the requests (e.g. via service account) with the following role permissions: -``` -rules: - - apiGroups: [ "" ] - resources: ["services/{{ template "prometheus-node-exporter.fullname" . }}"] - verbs: - - get -``` -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/_helpers.tpl deleted file mode 100644 index 72a6db4..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/_helpers.tpl +++ /dev/null @@ -1,236 +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 }} - -{{/* -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 }} - -{{/* -Common labels -*/}} -{{- define "prometheus-node-exporter.labels" -}} -helm.sh/chart: {{ include "prometheus-node-exporter.chart" . }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/component: metrics -app.kubernetes.io/part-of: {{ include "prometheus-node-exporter.name" . }} -{{ include "prometheus-node-exporter.selectorLabels" . }} -{{- with .Chart.AppVersion }} -app.kubernetes.io/version: {{ . | quote }} -{{- end }} -{{- with .Values.podLabels }} -{{ toYaml . }} -{{- end }} -{{- if .Values.releaseLabel }} -release: {{ .Release.Name }} -{{- end }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "prometheus-node-exporter.selectorLabels" -}} -app.kubernetes.io/name: {{ include "prometheus-node-exporter.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- 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 }} - -{{/* -The image to use -*/}} -{{- define "prometheus-node-exporter.image" -}} -{{- $temp_registry := (include "system_default_registry" .) }} -{{- if .Values.image.sha }} -{{- fail "image.sha forbidden. Use image.digest instead" }} -{{- else if .Values.image.digest }} -{{- if $temp_registry }} -{{- printf "%s%s:%s@%s" $temp_registry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) .Values.image.digest }} -{{- else if .Values.global.imageRegistry }} -{{- printf "%s/%s:%s@%s" .Values.global.imageRegistry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) .Values.image.digest }} -{{- else }} -{{- printf "%s/%s:%s@%s" .Values.image.registry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) .Values.image.digest }} -{{- end }} -{{- else }} -{{- if $temp_registry }} -{{- printf "%s%s:%s" $temp_registry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) }} -{{- else if .Values.global.imageRegistry }} -{{- printf "%s/%s:%s" .Values.global.imageRegistry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) }} -{{- else }} -{{- printf "%s/%s:%s" .Values.image.registry .Values.image.repository (default (printf "v%s" .Chart.AppVersion) .Values.image.tag) }} -{{- end }} -{{- 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 }} - -{{/* -Create the namespace name of the service monitor -*/}} -{{- define "prometheus-node-exporter.monitor-namespace" -}} -{{- if .Values.namespaceOverride }} -{{- .Values.namespaceOverride }} -{{- else }} -{{- if .Values.prometheus.monitor.namespace }} -{{- .Values.prometheus.monitor.namespace }} -{{- else }} -{{- .Release.Namespace }} -{{- end }} -{{- end }} -{{- end }} - -{{/* Sets default scrape limits for servicemonitor */}} -{{- define "servicemonitor.scrapeLimits" -}} -{{- with .sampleLimit }} -sampleLimit: {{ . }} -{{- end }} -{{- with .targetLimit }} -targetLimit: {{ . }} -{{- end }} -{{- with .labelLimit }} -labelLimit: {{ . }} -{{- end }} -{{- with .labelNameLengthLimit }} -labelNameLengthLimit: {{ . }} -{{- end }} -{{- with .labelValueLengthLimit }} -labelValueLengthLimit: {{ . }} -{{- end }} -{{- end }} - -{{/* -Formats imagePullSecrets. Input is (dict "Values" .Values "imagePullSecrets" .{specific imagePullSecrets}) -*/}} -{{- define "prometheus-node-exporter.imagePullSecrets" -}} -{{- range (concat .Values.global.imagePullSecrets .imagePullSecrets) }} - {{- if eq (typeOf .) "map[string]interface {}" }} -- {{ toYaml . | trim }} - {{- else }} -- name: {{ . }} - {{- end }} -{{- end }} -{{- end -}} - -{{/* -Create the namespace name of the pod monitor -*/}} -{{- define "prometheus-node-exporter.podmonitor-namespace" -}} -{{- if .Values.namespaceOverride }} -{{- .Values.namespaceOverride }} -{{- else }} -{{- if .Values.prometheus.podMonitor.namespace }} -{{- .Values.prometheus.podMonitor.namespace }} -{{- else }} -{{- .Release.Namespace }} -{{- end }} -{{- end }} -{{- end }} - -{{/* Sets default scrape limits for podmonitor */}} -{{- define "podmonitor.scrapeLimits" -}} -{{- with .sampleLimit }} -sampleLimit: {{ . }} -{{- end }} -{{- with .targetLimit }} -targetLimit: {{ . }} -{{- end }} -{{- with .labelLimit }} -labelLimit: {{ . }} -{{- end }} -{{- with .labelNameLengthLimit }} -labelNameLengthLimit: {{ . }} -{{- end }} -{{- with .labelValueLengthLimit }} -labelValueLengthLimit: {{ . }} -{{- end }} -{{- end }} - -{{/* Sets sidecar volumeMounts */}} -{{- define "prometheus-node-exporter.sidecarVolumeMounts" -}} -{{- range $_, $mount := $.Values.sidecarVolumeMount }} -- name: {{ $mount.name }} - mountPath: {{ $mount.mountPath }} - readOnly: {{ $mount.readOnly }} -{{- end }} -{{- range $_, $mount := $.Values.sidecarHostVolumeMounts }} -- name: {{ $mount.name }} - mountPath: {{ $mount.mountPath }} - readOnly: {{ $mount.readOnly }} -{{- if $mount.mountPropagation }} - mountPropagation: {{ $mount.mountPropagation }} -{{- end }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/clusterrole.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/clusterrole.yaml deleted file mode 100644 index c256dba..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/clusterrole.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if and (eq .Values.rbac.create true) (eq .Values.kubeRBACProxy.enabled true) -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "prometheus-node-exporter.fullname" . }} - labels: - {{- include "prometheus-node-exporter.labels" . | nindent 4 }} -rules: - {{- if $.Values.kubeRBACProxy.enabled }} - - apiGroups: [ "authentication.k8s.io" ] - resources: - - tokenreviews - verbs: [ "create" ] - - apiGroups: [ "authorization.k8s.io" ] - resources: - - subjectaccessreviews - verbs: [ "create" ] - {{- end }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/clusterrolebinding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/clusterrolebinding.yaml deleted file mode 100644 index 653305a..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and (eq .Values.rbac.create true) (eq .Values.kubeRBACProxy.enabled true) -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - {{- include "prometheus-node-exporter.labels" . | nindent 4 }} - name: {{ template "prometheus-node-exporter.fullname" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole -{{- if .Values.rbac.useExistingRole }} - name: {{ .Values.rbac.useExistingRole }} -{{- else }} - name: {{ template "prometheus-node-exporter.fullname" . }} -{{- end }} -subjects: -- kind: ServiceAccount - name: {{ template "prometheus-node-exporter.serviceAccountName" . }} - namespace: {{ template "prometheus-node-exporter.namespace" . }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/daemonset.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/daemonset.yaml deleted file mode 100644 index 48d274f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/daemonset.yaml +++ /dev/null @@ -1,309 +0,0 @@ -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: {{ include "prometheus-node-exporter.fullname" . }} - namespace: {{ include "prometheus-node-exporter.namespace" . }} - labels: - {{- include "prometheus-node-exporter.labels" . | nindent 4 }} - {{- with .Values.daemonsetAnnotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - selector: - matchLabels: - {{- include "prometheus-node-exporter.selectorLabels" . | nindent 6 }} - revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} - {{- with .Values.updateStrategy }} - updateStrategy: - {{- toYaml . | nindent 4 }} - {{- end }} - template: - metadata: - {{- with .Values.podAnnotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - labels: - {{- include "prometheus-node-exporter.labels" . | nindent 8 }} - spec: - automountServiceAccountToken: {{ ternary true false (or .Values.serviceAccount.automountServiceAccountToken .Values.kubeRBACProxy.enabled) }} - {{- with .Values.securityContext }} - securityContext: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.priorityClassName }} - priorityClassName: {{ . }} - {{- end }} - {{- with .Values.extraInitContainers }} - initContainers: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "prometheus-node-exporter.serviceAccountName" . }} - {{- with .Values.terminationGracePeriodSeconds }} - terminationGracePeriodSeconds: {{ . }} - {{- end }} - containers: - {{- $servicePort := ternary .Values.kubeRBACProxy.port .Values.service.port .Values.kubeRBACProxy.enabled }} - - name: node-exporter - image: {{ include "prometheus-node-exporter.image" . }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - args: - - --path.procfs=/host/proc - - --path.sysfs=/host/sys - {{- if .Values.hostRootFsMount.enabled }} - - --path.rootfs=/host/root - {{- if semverCompare ">=1.4.0-0" (coalesce .Values.version .Values.image.tag .Chart.AppVersion) }} - - --path.udev.data=/host/root/run/udev/data - {{- end }} - {{- end }} - - --web.listen-address=[$(HOST_IP)]:{{ $servicePort }} - {{- with .Values.extraArgs }} - {{- toYaml . | nindent 12 }} - {{- end }} - {{- with .Values.containerSecurityContext }} - securityContext: - {{- toYaml . | nindent 12 }} - {{- end }} - env: - - name: HOST_IP - {{- if .Values.kubeRBACProxy.enabled }} - value: 127.0.0.1 - {{- else if .Values.service.listenOnAllInterfaces }} - value: 0.0.0.0 - {{- else }} - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: status.hostIP - {{- end }} - {{- range $key, $value := .Values.env }} - - name: {{ $key }} - value: {{ $value | quote }} - {{- end }} - {{- if eq .Values.kubeRBACProxy.enabled false }} - ports: - - name: {{ .Values.service.portName }} - containerPort: {{ .Values.service.port }} - protocol: TCP - {{- end }} - livenessProbe: - failureThreshold: {{ .Values.livenessProbe.failureThreshold }} - httpGet: - {{- if .Values.kubeRBACProxy.enabled }} - host: 127.0.0.1 - {{- end }} - httpHeaders: - {{- range $_, $header := .Values.livenessProbe.httpGet.httpHeaders }} - - name: {{ $header.name }} - value: {{ $header.value }} - {{- end }} - path: / - port: {{ $servicePort }} - scheme: {{ upper .Values.livenessProbe.httpGet.scheme }} - initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.livenessProbe.periodSeconds }} - successThreshold: {{ .Values.livenessProbe.successThreshold }} - timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} - readinessProbe: - failureThreshold: {{ .Values.readinessProbe.failureThreshold }} - httpGet: - {{- if .Values.kubeRBACProxy.enabled }} - host: 127.0.0.1 - {{- end }} - httpHeaders: - {{- range $_, $header := .Values.readinessProbe.httpGet.httpHeaders }} - - name: {{ $header.name }} - value: {{ $header.value }} - {{- end }} - path: / - port: {{ $servicePort }} - scheme: {{ upper .Values.readinessProbe.httpGet.scheme }} - initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.readinessProbe.periodSeconds }} - successThreshold: {{ .Values.readinessProbe.successThreshold }} - timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} - {{- with .Values.resources }} - resources: - {{- toYaml . | nindent 12 }} - {{- end }} - {{- if .Values.terminationMessageParams.enabled }} - {{- with .Values.terminationMessageParams }} - terminationMessagePath: {{ .terminationMessagePath }} - terminationMessagePolicy: {{ .terminationMessagePolicy }} - {{- end }} - {{- end }} - volumeMounts: - - name: proc - mountPath: /host/proc - {{- with .Values.hostProcFsMount.mountPropagation }} - mountPropagation: {{ . }} - {{- end }} - readOnly: true - - name: sys - mountPath: /host/sys - {{- with .Values.hostSysFsMount.mountPropagation }} - mountPropagation: {{ . }} - {{- end }} - readOnly: true - {{- if .Values.hostRootFsMount.enabled }} - - name: root - mountPath: /host/root - {{- with .Values.hostRootFsMount.mountPropagation }} - mountPropagation: {{ . }} - {{- end }} - readOnly: true - {{- end }} - {{- range $_, $mount := .Values.extraHostVolumeMounts }} - - name: {{ $mount.name }} - mountPath: {{ $mount.mountPath }} - readOnly: {{ $mount.readOnly }} - {{- with $mount.mountPropagation }} - mountPropagation: {{ . }} - {{- end }} - {{- end }} - {{- range $_, $mount := .Values.sidecarVolumeMount }} - - name: {{ $mount.name }} - mountPath: {{ $mount.mountPath }} - readOnly: true - {{- end }} - {{- range $_, $mount := .Values.configmaps }} - - name: {{ $mount.name }} - mountPath: {{ $mount.mountPath }} - {{- end }} - {{- range $_, $mount := .Values.secrets }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - {{- end }} - {{- range .Values.sidecars }} - {{- $overwrites := dict "volumeMounts" (concat (include "prometheus-node-exporter.sidecarVolumeMounts" $ | fromYamlArray) (.volumeMounts | default list) | default list) }} - {{- $defaults := dict "image" (include "prometheus-node-exporter.image" $) "securityContext" $.Values.containerSecurityContext "imagePullPolicy" $.Values.image.pullPolicy }} - - {{- toYaml (merge $overwrites . $defaults) | nindent 10 }} - {{- end }} - {{- if .Values.kubeRBACProxy.enabled }} - - name: kube-rbac-proxy - args: - {{- if .Values.kubeRBACProxy.extraArgs }} - {{- .Values.kubeRBACProxy.extraArgs | toYaml | nindent 12 }} - {{- end }} - - --secure-listen-address=:{{ .Values.service.port}} - - --upstream=http://127.0.0.1:{{ $servicePort }}/ - - --proxy-endpoints-port=8888 - - --config-file=/etc/kube-rbac-proxy-config/config-file.yaml - volumeMounts: - - name: kube-rbac-proxy-config - mountPath: /etc/kube-rbac-proxy-config - imagePullPolicy: {{ .Values.kubeRBACProxy.image.pullPolicy }} - {{- $base_registry := (include "monitoring_registry" .) }} - {{- if .Values.kubeRBACProxy.image.sha }} - image: "{{ $base_registry | default .Values.kubeRBACProxy.image.registry}}/{{ .Values.kubeRBACProxy.image.repository }}:{{ .Values.kubeRBACProxy.image.tag }}@sha256:{{ .Values.kubeRBACProxy.image.sha }}" - {{- else }} - image: "{{ $base_registry | default .Values.kubeRBACProxy.image.registry}}/{{ .Values.kubeRBACProxy.image.repository }}:{{ .Values.kubeRBACProxy.image.tag }}" - {{- end }} - ports: - - containerPort: {{ .Values.service.port}} - name: {{ .Values.kubeRBACProxy.portName }} - {{- if .Values.kubeRBACProxy.enableHostPort }} - hostPort: {{ .Values.service.port }} - {{- end }} - - containerPort: 8888 - name: "http-healthz" - readinessProbe: - httpGet: - scheme: HTTPS - port: 8888 - path: healthz - initialDelaySeconds: 5 - timeoutSeconds: 5 - {{- if .Values.kubeRBACProxy.resources }} - resources: - {{- toYaml .Values.kubeRBACProxy.resources | nindent 12 }} - {{- end }} - {{- if .Values.terminationMessageParams.enabled }} - {{- with .Values.terminationMessageParams }} - terminationMessagePath: {{ .terminationMessagePath }} - terminationMessagePolicy: {{ .terminationMessagePolicy }} - {{- end }} - {{- end }} - {{- with .Values.kubeRBACProxy.env }} - env: - {{- range $key, $value := $.Values.kubeRBACProxy.env }} - - name: {{ $key }} - value: {{ $value | quote }} - {{- end }} - {{- end }} - {{- if .Values.kubeRBACProxy.containerSecurityContext }} - securityContext: - {{ toYaml .Values.kubeRBACProxy.containerSecurityContext | nindent 12 }} - {{- end }} - {{- end }} - {{- if or .Values.imagePullSecrets .Values.global.imagePullSecrets }} - imagePullSecrets: - {{- include "prometheus-node-exporter.imagePullSecrets" (dict "Values" .Values "imagePullSecrets" .Values.imagePullSecrets) | indent 8 }} - {{- end }} - hostNetwork: {{ .Values.hostNetwork }} - hostPID: {{ .Values.hostPID }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.dnsConfig }} - dnsConfig: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.restartPolicy }} - restartPolicy: {{ . }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - volumes: - - name: proc - hostPath: - path: /proc - - name: sys - hostPath: - path: /sys - {{- if .Values.hostRootFsMount.enabled }} - - name: root - hostPath: - path: / - {{- end }} - {{- range $_, $mount := .Values.extraHostVolumeMounts }} - - name: {{ $mount.name }} - hostPath: - path: {{ $mount.hostPath }} - {{- with $mount.type }} - type: {{ . }} - {{- end }} - {{- end }} - {{- range $_, $mount := .Values.sidecarVolumeMount }} - - name: {{ $mount.name }} - emptyDir: - medium: Memory - {{- end }} - {{- range $_, $mount := .Values.sidecarHostVolumeMounts }} - - name: {{ $mount.name }} - hostPath: - path: {{ $mount.hostPath }} - {{- end }} - {{- range $_, $mount := .Values.configmaps }} - - name: {{ $mount.name }} - configMap: - name: {{ $mount.name }} - {{- end }} - {{- range $_, $mount := .Values.secrets }} - - name: {{ $mount.name }} - secret: - secretName: {{ $mount.name }} - {{- end }} - {{- if .Values.kubeRBACProxy.enabled }} - - name: kube-rbac-proxy-config - configMap: - name: {{ template "prometheus-node-exporter.fullname" . }}-rbac-config - {{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/endpoints.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/endpoints.yaml deleted file mode 100644 index 56b6952..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/endpoints.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if .Values.endpoints }} -apiVersion: v1 -kind: Endpoints -metadata: - name: {{ include "prometheus-node-exporter.fullname" . }} - namespace: {{ include "prometheus-node-exporter.namespace" . }} - labels: - {{- include "prometheus-node-exporter.labels" . | nindent 4 }} -subsets: - - addresses: - {{- range .Values.endpoints }} - - ip: {{ . }} - {{- end }} - ports: - - name: {{ .Values.service.portName }} - port: {{ .Values.service.port }} - protocol: TCP -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/extra-manifests.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/extra-manifests.yaml deleted file mode 100644 index 2b21b71..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/extra-manifests.yaml +++ /dev/null @@ -1,4 +0,0 @@ -{{ range .Values.extraManifests }} ---- -{{ tpl . $ }} -{{ end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/networkpolicy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/networkpolicy.yaml deleted file mode 100644 index 8257227..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/networkpolicy.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- if .Values.networkPolicy.enabled }} -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: {{ include "prometheus-node-exporter.fullname" . }} - namespace: {{ include "prometheus-node-exporter.namespace" . }} - labels: - {{- include "prometheus-node-exporter.labels" $ | nindent 4 }} - {{- with .Values.service.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - ingress: - - ports: - - port: {{ .Values.service.port }} - policyTypes: - - Egress - - Ingress - podSelector: - matchLabels: - {{- include "prometheus-node-exporter.selectorLabels" . | nindent 6 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/podmonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/podmonitor.yaml deleted file mode 100644 index f88da6a..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/podmonitor.yaml +++ /dev/null @@ -1,91 +0,0 @@ -{{- if .Values.prometheus.podMonitor.enabled }} -apiVersion: {{ .Values.prometheus.podMonitor.apiVersion | default "monitoring.coreos.com/v1" }} -kind: PodMonitor -metadata: - name: {{ include "prometheus-node-exporter.fullname" . }} - namespace: {{ include "prometheus-node-exporter.podmonitor-namespace" . }} - labels: - {{- include "prometheus-node-exporter.labels" . | nindent 4 }} - {{- with .Values.prometheus.podMonitor.additionalLabels }} - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - jobLabel: {{ default "app.kubernetes.io/name" .Values.prometheus.podMonitor.jobLabel }} - {{- include "podmonitor.scrapeLimits" .Values.prometheus.podMonitor | nindent 2 }} - selector: - matchLabels: - {{- with .Values.prometheus.podMonitor.selectorOverride }} - {{- toYaml . | nindent 6 }} - {{- else }} - {{- include "prometheus-node-exporter.selectorLabels" . | nindent 6 }} - {{- end }} - namespaceSelector: - matchNames: - - {{ include "prometheus-node-exporter.namespace" . }} - {{- with .Values.prometheus.podMonitor.attachMetadata }} - attachMetadata: - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.prometheus.podMonitor.podTargetLabels }} - podTargetLabels: - {{- toYaml . | nindent 4 }} - {{- end }} - podMetricsEndpoints: - - port: {{ .Values.service.portName }} - {{- with .Values.prometheus.podMonitor.scheme }} - scheme: {{ . }} - {{- end }} - {{- with .Values.prometheus.podMonitor.path }} - path: {{ . }} - {{- end }} - {{- with .Values.prometheus.podMonitor.basicAuth }} - basicAuth: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.prometheus.podMonitor.bearerTokenSecret }} - bearerTokenSecret: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.prometheus.podMonitor.tlsConfig }} - tlsConfig: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.prometheus.podMonitor.authorization }} - authorization: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.prometheus.podMonitor.oauth2 }} - oauth2: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.prometheus.podMonitor.proxyUrl }} - proxyUrl: {{ . }} - {{- end }} - {{- with .Values.prometheus.podMonitor.interval }} - interval: {{ . }} - {{- end }} - {{- with .Values.prometheus.podMonitor.honorTimestamps }} - honorTimestamps: {{ . }} - {{- end }} - {{- with .Values.prometheus.podMonitor.honorLabels }} - honorLabels: {{ . }} - {{- end }} - {{- with .Values.prometheus.podMonitor.scrapeTimeout }} - scrapeTimeout: {{ . }} - {{- end }} - {{- with .Values.prometheus.podMonitor.relabelings }} - relabelings: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.prometheus.podMonitor.metricRelabelings }} - metricRelabelings: - {{- toYaml . | nindent 8 }} - {{- end }} - enableHttp2: {{ default false .Values.prometheus.podMonitor.enableHttp2 }} - filterRunning: {{ default true .Values.prometheus.podMonitor.filterRunning }} - followRedirects: {{ default false .Values.prometheus.podMonitor.followRedirects }} - {{- with .Values.prometheus.podMonitor.params }} - params: - {{- toYaml . | nindent 8 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml deleted file mode 100644 index ee5bbba..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if and (or .Values.global.cattle.psp.enable (and .Values.rbac.create .Values.rbac.pspEnabled)) (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: psp-{{ include "prometheus-node-exporter.fullname" . }} - labels: - {{- include "prometheus-node-exporter.labels" . | nindent 4 }} -rules: -- apiGroups: ['extensions'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ include "prometheus-node-exporter.fullname" . }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml deleted file mode 100644 index 160f2bb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if and (or .Values.global.cattle.psp.enable (and .Values.rbac.create .Values.rbac.pspEnabled)) (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: psp-{{ include "prometheus-node-exporter.fullname" . }} - labels: - {{- include "prometheus-node-exporter.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: psp-{{ include "prometheus-node-exporter.fullname" . }} -subjects: - - kind: ServiceAccount - name: {{ include "prometheus-node-exporter.fullname" . }} - namespace: {{ include "prometheus-node-exporter.namespace" . }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/psp.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/psp.yaml deleted file mode 100644 index f3b52e1..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/psp.yaml +++ /dev/null @@ -1,49 +0,0 @@ -{{- if and (or .Values.global.cattle.psp.enable (and .Values.rbac.create .Values.rbac.pspEnabled)) (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ include "prometheus-node-exporter.fullname" . }} - namespace: {{ include "prometheus-node-exporter.namespace" . }} - labels: - {{- include "prometheus-node-exporter.labels" . | nindent 4 }} - {{- with .Values.rbac.pspAnnotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - privileged: false - # 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: - # Allow adding the root group. - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - # Allow adding the root group. - - min: 0 - max: 65535 - readOnlyRootFilesystem: false -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/rbac-configmap.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/rbac-configmap.yaml deleted file mode 100644 index 814e110..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/rbac-configmap.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if .Values.kubeRBACProxy.enabled}} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "prometheus-node-exporter.fullname" . }}-rbac-config - namespace: {{ include "prometheus-node-exporter.namespace" . }} -data: - config-file.yaml: |+ - authorization: - resourceAttributes: - namespace: {{ template "prometheus-node-exporter.namespace" . }} - apiVersion: v1 - resource: services - subresource: {{ template "prometheus-node-exporter.fullname" . }} - name: {{ template "prometheus-node-exporter.fullname" . }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/service.yaml deleted file mode 100644 index a065e46..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/service.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- if .Values.service.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ include "prometheus-node-exporter.fullname" . }} - namespace: {{ include "prometheus-node-exporter.namespace" . }} - labels: - {{- include "prometheus-node-exporter.labels" $ | nindent 4 }} - {{- with .Values.service.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: -{{- if .Values.service.ipDualStack.enabled }} - ipFamilies: {{ toYaml .Values.service.ipDualStack.ipFamilies | nindent 4 }} - ipFamilyPolicy: {{ .Values.service.ipDualStack.ipFamilyPolicy }} -{{- end }} - 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: {{ .Values.service.portName }} - selector: - {{- include "prometheus-node-exporter.selectorLabels" . | nindent 4 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/serviceaccount.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/serviceaccount.yaml deleted file mode 100644 index 5c3348c..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/serviceaccount.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if and .Values.rbac.create .Values.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "prometheus-node-exporter.serviceAccountName" . }} - namespace: {{ include "prometheus-node-exporter.namespace" . }} - labels: - {{- include "prometheus-node-exporter.labels" . | nindent 4 }} - {{- with .Values.serviceAccount.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- if or .Values.serviceAccount.imagePullSecrets .Values.global.imagePullSecrets }} -imagePullSecrets: - {{- include "prometheus-node-exporter.imagePullSecrets" (dict "Values" .Values "imagePullSecrets" .Values.serviceAccount.imagePullSecrets) | indent 2 }} -{{- end }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/servicemonitor.yaml deleted file mode 100644 index 6d6e440..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/servicemonitor.yaml +++ /dev/null @@ -1,71 +0,0 @@ -{{- if .Values.prometheus.monitor.enabled }} -apiVersion: {{ .Values.prometheus.monitor.apiVersion | default "monitoring.coreos.com/v1" }} -kind: ServiceMonitor -metadata: - name: {{ include "prometheus-node-exporter.fullname" . }} - namespace: {{ include "prometheus-node-exporter.monitor-namespace" . }} - labels: - {{- include "prometheus-node-exporter.labels" . | nindent 4 }} - {{- with .Values.prometheus.monitor.additionalLabels }} - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - jobLabel: {{ default "app.kubernetes.io/name" .Values.prometheus.monitor.jobLabel }} - {{- include "servicemonitor.scrapeLimits" .Values.prometheus.monitor | nindent 2 }} - {{- with .Values.prometheus.monitor.podTargetLabels }} - podTargetLabels: - {{- toYaml . | nindent 4 }} - {{- end }} - selector: - matchLabels: - {{- with .Values.prometheus.monitor.selectorOverride }} - {{- toYaml . | nindent 6 }} - {{- else }} - {{- include "prometheus-node-exporter.selectorLabels" . | nindent 6 }} - {{- end }} - {{- with .Values.prometheus.monitor.attachMetadata }} - attachMetadata: - {{- toYaml . | nindent 4 }} - {{- end }} - endpoints: - - port: {{ .Values.service.portName }} - scheme: {{ .Values.prometheus.monitor.scheme }} - {{- with .Values.prometheus.monitor.basicAuth }} - basicAuth: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.prometheus.monitor.bearerTokenFile }} - bearerTokenFile: {{ . }} - {{- end }} - {{- with .Values.prometheus.monitor.tlsConfig }} - tlsConfig: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.prometheus.monitor.proxyUrl }} - proxyUrl: {{ . }} - {{- end }} - {{- with .Values.prometheus.monitor.interval }} - interval: {{ . }} - {{- end }} - {{- with .Values.prometheus.monitor.scrapeTimeout }} - scrapeTimeout: {{ . }} - {{- end }} - {{- with .Values.prometheus.monitor.relabelings }} - relabelings: - {{- toYaml . | nindent 8 }} - {{- end }} - metricRelabelings: - {{- with .Values.prometheus.monitor.metricRelabelings }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName }} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/verticalpodautoscaler.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/verticalpodautoscaler.yaml deleted file mode 100644 index 2c2705f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/templates/verticalpodautoscaler.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if and (.Capabilities.APIVersions.Has "autoscaling.k8s.io/v1") (.Values.verticalPodAutoscaler.enabled) }} -apiVersion: autoscaling.k8s.io/v1 -kind: VerticalPodAutoscaler -metadata: - name: {{ include "prometheus-node-exporter.fullname" . }} - namespace: {{ include "prometheus-node-exporter.namespace" . }} - labels: - {{- include "prometheus-node-exporter.labels" . | nindent 4 }} -spec: - {{- with .Values.verticalPodAutoscaler.recommenders }} - recommenders: - {{- toYaml . | nindent 4 }} - {{- end }} - resourcePolicy: - containerPolicies: - - containerName: node-exporter - {{- with .Values.verticalPodAutoscaler.controlledResources }} - controlledResources: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.verticalPodAutoscaler.controlledValues }} - controlledValues: {{ . }} - {{- end }} - {{- with .Values.verticalPodAutoscaler.maxAllowed }} - maxAllowed: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.verticalPodAutoscaler.minAllowed }} - minAllowed: - {{- toYaml . | nindent 8 }} - {{- end }} - targetRef: - apiVersion: apps/v1 - kind: DaemonSet - name: {{ include "prometheus-node-exporter.fullname" . }} - {{- with .Values.verticalPodAutoscaler.updatePolicy }} - updatePolicy: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/values.yaml deleted file mode 100644 index b9f2f7a..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/prometheus-node-exporter/values.yaml +++ /dev/null @@ -1,530 +0,0 @@ -# Default values for prometheus-node-exporter. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -image: - registry: docker.io - repository: rancher/mirrored-prometheus-node-exporter - # Overrides the image tag whose default is {{ printf "v%s" .Chart.AppVersion }} - tag: v1.7.0 - pullPolicy: IfNotPresent - digest: "" - -imagePullSecrets: [] -# - name: "image-pull-secret" -nameOverride: "" -fullnameOverride: "" - -# Number of old history to retain to allow rollback -# Default Kubernetes value is set to 10 -revisionHistoryLimit: 10 - -global: - cattle: - psp: - enable: true - systemDefaultRegistry: "" - - # To help compatibility with other charts which use global.imagePullSecrets. - # Allow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style). - # global: - # imagePullSecrets: - # - name: pullSecret1 - # - name: pullSecret2 - # or - # global: - # imagePullSecrets: - # - pullSecret1 - # - pullSecret2 - imagePullSecrets: [] - # - # Allow parent charts to override registry hostname - imageRegistry: "docker.io" - -# Configure kube-rbac-proxy. When enabled, creates a kube-rbac-proxy to protect the node-exporter http endpoint. -# The requests are served through the same service but requests are HTTPS. -kubeRBACProxy: - enabled: false - ## Set environment variables as name/value pairs - env: {} - # VARIABLE: value - image: - registry: docker.io - repository: rancher/mirrored-kube-rbac-proxy - tag: v0.15.0 - sha: "" - pullPolicy: IfNotPresent - - # List of additional cli arguments to configure kube-rbac-proxy - # for example: --tls-cipher-suites, --log-file, etc. - # all the possible args can be found here: https://github.com/brancz/kube-rbac-proxy#usage - extraArgs: [] - - ## Specify security settings for a Container - ## Allows overrides and additional options compared to (Pod) securityContext - ## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container - containerSecurityContext: {} - - # Specify the port used for the Node exporter container (upstream port) - port: 8100 - # Specify the name of the container port - portName: http - # Configure a hostPort. If true, hostPort will be enabled in the container and set to service.port. - enableHostPort: 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: 64Mi - # requests: - # cpu: 10m - # memory: 32Mi - -service: - enabled: true - type: ClusterIP - port: 9796 - targetPort: 9796 - nodePort: - portName: metrics - listenOnAllInterfaces: true - annotations: - prometheus.io/scrape: "true" - ipDualStack: - enabled: false - ipFamilies: ["IPv6", "IPv4"] - ipFamilyPolicy: "PreferDualStack" - -# Set a NetworkPolicy with: -# ingress only on service.port -# no egress permitted -networkPolicy: - enabled: false - -# Additional environment variables that will be passed to the daemonset -env: {} -## env: -## VARIABLE: value - -prometheus: - monitor: - enabled: false - additionalLabels: {} - namespace: "" - - jobLabel: "" - - # List of pod labels to add to node exporter metrics - # https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitor - podTargetLabels: [] - - scheme: http - basicAuth: {} - bearerTokenFile: - tlsConfig: {} - - ## proxyUrl: URL of a proxy that should be used for scraping. - ## - proxyUrl: "" - - ## Override serviceMonitor selector - ## - selectorOverride: {} - - ## Attach node metadata to discovered targets. Requires Prometheus v2.35.0 and above. - ## - attachMetadata: - node: false - - relabelings: [] - metricRelabelings: [] - interval: "" - scrapeTimeout: 10s - ## prometheus.monitor.apiVersion ApiVersion for the serviceMonitor Resource(defaults to "monitoring.coreos.com/v1") - apiVersion: "" - - ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - ## - sampleLimit: 0 - - ## TargetLimit defines a limit on the number of scraped targets that will be accepted. - ## - targetLimit: 0 - - ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelLimit: 0 - - ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelNameLengthLimit: 0 - - ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelValueLengthLimit: 0 - - # PodMonitor defines monitoring for a set of pods. - # ref. https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.PodMonitor - # Using a PodMonitor may be preferred in some environments where there is very large number - # of Node Exporter endpoints (1000+) behind a single service. - # The PodMonitor is disabled by default. When switching from ServiceMonitor to PodMonitor, - # the time series resulting from the configuration through PodMonitor may have different labels. - # For instance, there will not be the service label any longer which might - # affect PromQL queries selecting that label. - podMonitor: - enabled: false - # Namespace in which to deploy the pod monitor. Defaults to the release namespace. - namespace: "" - # Additional labels, e.g. setting a label for pod monitor selector as set in prometheus - additionalLabels: {} - # release: kube-prometheus-stack - # PodTargetLabels transfers labels of the Kubernetes Pod onto the target. - podTargetLabels: [] - # apiVersion defaults to monitoring.coreos.com/v1. - apiVersion: "" - # Override pod selector to select pod objects. - selectorOverride: {} - # Attach node metadata to discovered targets. Requires Prometheus v2.35.0 and above. - attachMetadata: - node: false - # The label to use to retrieve the job name from. Defaults to label app.kubernetes.io/name. - jobLabel: "" - - # Scheme/protocol to use for scraping. - scheme: "http" - # Path to scrape metrics at. - path: "/metrics" - - # BasicAuth allow an endpoint to authenticate over basic authentication. - # More info: https://prometheus.io/docs/operating/configuration/#endpoint - basicAuth: {} - # 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. - # https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#secretkeyselector-v1-core - bearerTokenSecret: {} - # TLS configuration to use when scraping the endpoint. - tlsConfig: {} - # Authorization section for this endpoint. - # https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.SafeAuthorization - authorization: {} - # OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer. - # https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.OAuth2 - oauth2: {} - - # ProxyURL eg http://proxyserver:2195. Directs scrapes through proxy to this endpoint. - proxyUrl: "" - # Interval at which endpoints should be scraped. If not specified Prometheus’ global scrape interval is used. - interval: "" - # Timeout after which the scrape is ended. If not specified, the Prometheus global scrape interval is used. - scrapeTimeout: "" - # HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data. - honorTimestamps: true - # HonorLabels chooses the metric’s labels on collisions with target labels. - honorLabels: true - # Whether to enable HTTP2. Default false. - enableHttp2: "" - # Drop pods that are not running. (Failed, Succeeded). - # Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase - filterRunning: "" - # FollowRedirects configures whether scrape requests follow HTTP 3xx redirects. Default false. - followRedirects: "" - # Optional HTTP URL parameters - params: {} - - # RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds - # relabelings for a few standard Kubernetes fields. The original scrape job’s name - # is available via the __tmp_prometheus_job_name label. - # More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config - relabelings: [] - # MetricRelabelConfigs to apply to samples before ingestion. - metricRelabelings: [] - - # SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - sampleLimit: 0 - # TargetLimit defines a limit on the number of scraped targets that will be accepted. - targetLimit: 0 - # Per-scrape limit on number of labels that will be accepted for a sample. - # Only valid in Prometheus versions 2.27.0 and newer. - labelLimit: 0 - # Per-scrape limit on length of labels name that will be accepted for a sample. - # Only valid in Prometheus versions 2.27.0 and newer. - labelNameLengthLimit: 0 - # Per-scrape limit on length of labels value that will be accepted for a sample. - # Only valid in Prometheus versions 2.27.0 and newer. - labelValueLengthLimit: 0 - -## 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 - -# Specify the container restart policy passed to the Node Export container -# Possible Values: Always (default)|OnFailure|Never -restartPolicy: null - -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: [] - automountServiceAccountToken: false - -securityContext: - fsGroup: 65534 - runAsGroup: 65534 - runAsNonRoot: true - runAsUser: 65534 - -containerSecurityContext: - readOnlyRootFilesystem: true - # capabilities: - # add: - # - SYS_TIME - -rbac: - ## If true, create & use RBAC resources - ## - create: true - pspAnnotations: {} - -# 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 - -# Share the host process ID namespace -hostPID: true - -# Mount the node's root file system (/) at /host/root in the container -hostRootFsMount: - enabled: true - # Defines how new mounts in existing mounts on the node or in the container - # are propagated to the container or node, respectively. Possible values are - # None, HostToContainer, and Bidirectional. If this field is omitted, then - # None is used. More information on: - # https://kubernetes.io/docs/concepts/storage/volumes/#mount-propagation - mountPropagation: HostToContainer - -# Mount the node's proc file system (/proc) at /host/proc in the container -hostProcFsMount: - # Possible values are None, HostToContainer, and Bidirectional - mountPropagation: "" - -# Mount the node's sys file system (/sys) at /host/sys in the container -hostSysFsMount: - # Possible values are None, HostToContainer, and Bidirectional - mountPropagation: "" - -## 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: {} - -# Annotations to be added to node exporter daemonset -daemonsetAnnotations: {} - -## set to true to add the release label so scraping of the servicemonitor with kube-prometheus-stack works out of the box -releaseLabel: false - -# 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: - kubernetes.io/os: linux - # kubernetes.io/arch: amd64 - -# Specify grace period for graceful termination of pods. Defaults to 30 if null or not specified -terminationGracePeriodSeconds: null - -tolerations: - - effect: NoSchedule - operator: Exists - - effect: NoExecute - operator: Exists - -# Enable or disable container termination message settings -# https://kubernetes.io/docs/tasks/debug/debug-application/determine-reason-pod-failure/ -terminationMessageParams: - enabled: false - # If enabled, specify the path for termination messages - terminationMessagePath: /dev/termination-log - # If enabled, specify the policy for termination messages - terminationMessagePolicy: File - - -## 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 to node-exporter container -## -extraHostVolumeMounts: [] -# - name: -# hostPath: -# https://kubernetes.io/docs/concepts/storage/volumes/#hostpath-volume-types -# type: "" (Default)|DirectoryOrCreate|Directory|FileOrCreate|File|Socket|CharDevice|BlockDevice -# 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; fields image,imagePullPolicy,securityContext take default value from main container -## -sidecars: [] -# - name: nvidia-dcgm-exporter -# image: nvidia/dcgm-exporter:1.4.3 -# volumeMounts: -# - name: tmp -# mountPath: /tmp - -## Volume for sidecar containers -## -sidecarVolumeMount: [] -# - name: collector-textfiles -# mountPath: /run/prometheus -# readOnly: false - -## Additional mounts from the host to sidecar containers -## -sidecarHostVolumeMounts: [] -# - name: -# hostPath: -# mountPath: -# readOnly: true|false -# mountPropagation: None|HostToContainer|Bidirectional - -## Additional InitContainers to initialize the pod -## -extraInitContainers: [] - -## Liveness probe -## -livenessProbe: - failureThreshold: 3 - httpGet: - httpHeaders: [] - scheme: http - initialDelaySeconds: 0 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 - -## Readiness probe -## -readinessProbe: - failureThreshold: 3 - httpGet: - httpHeaders: [] - scheme: http - initialDelaySeconds: 0 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 - -# Enable vertical pod autoscaler support for prometheus-node-exporter -verticalPodAutoscaler: - enabled: false - - # Recommender responsible for generating recommendation for the object. - # List should be empty (then the default recommender will generate the recommendation) - # or contain exactly one recommender. - # recommenders: - # - name: custom-recommender-performance - - # List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory - controlledResources: [] - # Specifies which resource values should be controlled: RequestsOnly or RequestsAndLimits. - # controlledValues: RequestsAndLimits - - # Define the max allowed resources for the pod - maxAllowed: {} - # cpu: 200m - # memory: 100Mi - # Define the min allowed resources for the pod - minAllowed: {} - # cpu: 200m - # memory: 100Mi - - # updatePolicy: - # Specifies minimal number of replicas which need to be alive for VPA Updater to attempt pod eviction - # minReplicas: 1 - # Specifies whether recommended updates are applied when a Pod is started and whether recommended updates - # are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "Auto". - # updateMode: Auto - -# Extra manifests to deploy as an array -extraManifests: [] - # - | - # apiVersion: v1 - # kind: ConfigMap - # metadata: - # name: prometheus-extra - # data: - # extra-data: "value" - -# Override version of app, required if image.tag is defined and does not follow semver -version: "" diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/Chart.yaml deleted file mode 100644 index dbf4d0b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: rke2ControllerManager -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2ControllerManager/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/Chart.yaml deleted file mode 100644 index 87495a6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: rke2Etcd -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Etcd/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/Chart.yaml deleted file mode 100644 index 4bce6d4..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: rke2IngressNginx -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2IngressNginx/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/Chart.yaml deleted file mode 100644 index 0a316e0..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: rke2Proxy -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Proxy/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/Chart.yaml deleted file mode 100644 index fa6aa5a..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: rke2Scheduler -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rke2Scheduler/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/Chart.yaml deleted file mode 100644 index df00a46..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: rkeControllerManager -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeControllerManager/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/Chart.yaml deleted file mode 100644 index 96b33f0..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: rkeEtcd -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeEtcd/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/Chart.yaml deleted file mode 100644 index bc49bce..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: rkeIngressNginx -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeIngressNginx/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/Chart.yaml deleted file mode 100644 index 18eac32..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: rkeProxy -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeProxy/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/.helmignore deleted file mode 100644 index 0e8a0eb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/Chart.yaml deleted file mode 100644 index 8c53b63..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/kube-version: '>= 1.26.0-0 < 1.31.0-0' - 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. -kubeVersion: '>=1.26.0-0' -name: rkeScheduler -type: application -version: 0.2.0 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/README.md deleted file mode 100644 index 345002f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/README.md +++ /dev/null @@ -1,90 +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. - -## Upgrading to Kubernetes v1.25+ - -Starting in Kubernetes v1.25, [Pod Security Policies](https://kubernetes.io/docs/concepts/security/pod-security-policy/) have been removed from the Kubernetes API. - -As a result, **before upgrading to Kubernetes v1.25** (or on a fresh install in a Kubernetes v1.25+ cluster), users are expected to perform an in-place upgrade of this chart with `global.cattle.psp.enabled` set to `false` if it has been previously set to `true`. -​ -> **Note:** -> In this chart release, any previous field that was associated with any PSP resources have been removed in favor of a single global field: `global.cattle.psp.enabled`. - -> **Note:** -> If you upgrade your cluster to Kubernetes v1.25+ before removing PSPs via a `helm upgrade` (even if you manually clean up resources), **it will leave the Helm release in a broken state within the cluster such that further Helm operations will not work (`helm uninstall`, `helm upgrade`, etc.).** -> -> If your charts get stuck in this state, please consult the Rancher docs on how to clean up your Helm release secrets. - -Upon setting `global.cattle.psp.enabled` to false, the chart will remove any PSP resources deployed on its behalf from the cluster. This is the default setting for this chart. - -As a replacement for PSPs, [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) should be used. Please consult the Rancher docs for more details on how to configure your chart release namespaces to work with the new Pod Security Admission and apply Pod Security Standards. - -## 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}]` | -| `service.selector` | The selector that is used to populate the Service's Endpoints object. The chart will error out on rendering templating if `.Values.clients.enabled` is set alongside this field, since it is expected that this service should point to the PushProx Clients Daemonset / Deployment | `{}` | -| `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.forceHTTPSScheme` | Forces 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.authenticationMethod.bearerTokenFile.enabled` | If set to true, the client will use service account credentials mounted at the configured path `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath`. This requires permissions to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath` | This is a volume mount on the pod with permissions to scrape `/metrics` endpoint of Kubernetes components | `"/var/run/secrets/kubernetes.io/serviceaccount/token"` | -| `clients.https.authenticationMethod.bearerTokenSecret.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components. This method is deprecated by the prometheus operator and may be removed in a future release | `false` | -| `clients.https.authenticationMethod.authorization.enabled` | If set to true, the client will use service account credentials to scrape `/metrics` endpoint of Kubernetes components | `false` | -| `clients.https.authenticationMethod.authorization.type` | If set, the client will use this type of authorization in its client requests for metrics | `"bearer"` | -| `clients.https.authenticationMethod.authorization.credentials.key` | If set, the client will use this key in the secret created by `clients.https.useServiceAccountCredentials` for authorization in its client requests for metrics | `"token"` | -| `clients.https.authenticationMethod.authorization.credentials.optional` | If set to false, the client will fail if the key in the secret created by `clients.https.useServiceAccountCredentials` does not exist | `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.https.seLinuxOptions` | seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. | `""` | -| `clients.metrics.enabled` | Whether the client should publish PushProx client-specific metrics. | `false` | -| `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 | `[]` | -| `kubeVersionOverrides` | A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches any of the semver constraints provided as keys on the map. On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. | `[]` - -*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. diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/_helpers.tpl deleted file mode 100644 index 1ba5093..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/_helpers.tpl +++ /dev/null @@ -1,170 +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 "applyKubeVersionOverrides" -}} -{{- $overrides := dict -}} -{{- range $override := .Values.kubeVersionOverrides -}} -{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} -{{- $_ := mergeOverwrite $overrides $override.values -}} -{{- end -}} -{{- end -}} -{{- $_ := mergeOverwrite .Values $overrides -}} -{{- end -}} - -{{- 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.serviceAccountTokenName" -}} -{{- printf "pushprox-%s-client-service-account-token" (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" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $setHTTPSScheme := .Values.clients.https.forceHTTPSScheme -}} -{{- $insecureSkipVerify := .Values.clients.https.insecureSkipVerify -}} -{{- $useServiceAccountCredentials := .Values.clients.https.useServiceAccountCredentials -}} -{{- $serviceAccountTokenName := (include "pushProxy.client.serviceAccountTokenName" . ) -}} -{{- $metricRelabelings := list }} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- if .Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- range $endpoints }} -{{- if $.Values.proxy.enabled }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- end }} -{{- $clusterIdRelabel := dict }} -{{- $metricRelabelings := list }} -{{- if $.Values.global.cattle.clusterId }} -{{- $_ := set $clusterIdRelabel "action" "replace" }} -{{- $_ := set $clusterIdRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterIdRelabel "targetLabel" "cluster_id" }} -{{- $_ := set $clusterIdRelabel "replacement" $.Values.global.cattle.clusterId }} -{{- $metricRelabelings = append $metricRelabelings $clusterIdRelabel }} -{{- end }} -{{- $clusterNameRelabel := dict }} -{{- if $.Values.global.cattle.clusterName }} -{{- $_ := set $clusterNameRelabel "action" "replace" }} -{{- $_ := set $clusterNameRelabel "sourceLabels" (list "__address__") }} -{{- $_ := set $clusterNameRelabel "targetLabel" "cluster_name" }} -{{- $_ := set $clusterNameRelabel "replacement" $.Values.global.cattle.clusterName }} -{{- $metricRelabelings = append $metricRelabelings $clusterNameRelabel }} -{{- end }} -{{- if not (empty $metricRelabelings) }} -{{- $_ := set . "metricRelabelings" ($metricRelabelings)}} -{{- end }} -{{- if $setHTTPSScheme -}} -{{- $_ := set . "scheme" "https" }} -{{- end -}} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- if (hasKey . "tlsConfig") }} -{{- $_ := set (get . "tlsConfig") "insecureSkipVerify" $insecureSkipVerify }} -{{- else }} -{{- $_ := set . "tlsConfig" (dict "insecureSkipVerify" $insecureSkipVerify) }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenFile.enabled }} -{{- $_ := set . "bearerTokenFile" $.Values.clients.https.authenticationMethod.bearerTokenFile.bearerTokenFilePath }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.bearerTokenSecret.enabled }} -{{- $_ := set . "bearerTokenSecret" $serviceAccountTokenName }} -{{- end }} -{{- if $.Values.clients.https.authenticationMethod.authorization.enabled }} -{{- if (hasKey . "authorization") }} -{{- $_ := set (get . "authorization") "type" $.Values.clients.https.authenticationMethod.authorization.type }} -{{- $_ := set (get . "authorization") "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional) }} -{{- else }} -{{- $_ := set . "authorization" (dict "type" $.Values.clients.https.authenticationMethod.authorization.type) }} -{{- $_ := set . "authorization" (dict "credentials" (dict "name" $serviceAccountTokenName "key" $.Values.clients.https.authenticationMethod.authorization.credentials.key "optional" $.Values.clients.https.authenticationMethod.authorization.credentials.optional)) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-clients-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index a8e27c3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,97 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- end }} -{{- 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 }} ---- -{{- if .Values.clients.https.useServiceAccountCredentials }} -apiVersion: v1 -kind: Secret -type: kubernetes.io/service-account-token -metadata: - name: {{ template "pushProxy.client.serviceAccountTokenName" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - annotations: - kubernetes.io/service-account.name: {{ template "pushProxy.client.name" . }} -{{- end }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 6 }} -{{- end }} - 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 }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-clients.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-clients.yaml deleted file mode 100644 index e8fcfb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-clients.yaml +++ /dev/null @@ -1,157 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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) - {{- if .Values.clients.metrics.enabled }} - - --metrics-addr=$(PORT) - {{- end }} - - --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 - {{- if .Values.clients.metrics.enabled }} - - name: PORT - value: :{{ .Values.clients.port }} - {{- end }} - - 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 -{{- if and .Values.global.seLinux.enabled .Values.clients.https.seLinuxOptions }} - seLinuxOptions: {{ .Values.clients.https.seLinuxOptions | toYaml | nindent 12 }} -{{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-proxy-rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index eefe609..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} -{{- end }} ---- -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 }} ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-proxy.yaml deleted file mode 100644 index 723bbd6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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" . }} - {{- if .Values.global.imagePullSecretName }} - imagePullSecrets: - - name: {{ .Values.global.imagePullSecretName }} - {{- end }} - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 67eb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- template "applyKubeVersionOverrides" . -}} -{{- 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 }} ---- -{{- $selector := "" }} -{{- if not (kindIs "invalid" .Values.service) }} -{{- if not (kindIs "invalid" .Values.service.selector) }} -{{ if .Values.service.selector }} -{{- if .Values.clients.enabled }} -{{- required (printf "Cannot override .Values.service.selector=%s when .Values.clients.enabled=true" (toJson .Values.service.selector)) "" }} -{{- end }} -{{- $selector = (toYaml .Values.service.selector) }} -{{- end }} -{{- end }} -{{- end }} -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: {{ default (include "pushProxy.client.labels" .) $selector | nindent 4 }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/validate-install-crd.yaml deleted file mode 100644 index 16abc2f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/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.coreos.com/v1/ServiceMonitor" 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 Prometheus Operator CRDs before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/values.yaml deleted file mode 100644 index 1e07604..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/rkeScheduler/values.yaml +++ /dev/null @@ -1,166 +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 - -# Configuration - -global: - cattle: - psp: - enabled: false - systemDefaultRegistry: "" - seLinux: - enabled: false - -# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. -# -# For each key in kubeVersionOverrides, this chart will check to see if the current Kubernetes cluster's version matches -# any of the semver constraints provided as keys on the map. -# -# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. -# -# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. -# -# Notes: -# - On running a helm template, Helm generally assumes the kubeVersion is v1.20.0 -# - On running a helm install --dry-run, the correct kubeVersion should be chosen. -kubeVersionOverrides: [] -# - constraint: "< 1.21" -# values: -# metricsPort: 10252 -# clients: -# https: -# enabled: false -# insecureSkipVerify: false -# useServiceAccountCredentials: false - -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 - -# Configure Service that grabs scrape targets -service: - # The selector that is used to populate the Service's Endpoints object. - # The chart will error out on rendering templating if .Values.clients.enabled is set alongside this field, - # since it is expected that this service should point to the PushProx Clients Daemonset / Deployment - selector: {} - -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 - # Does the client require requests be sent to http or https? - forceHTTPSScheme: 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 - # Configuration for authentication to metrics via https endpoint - authenticationMethod: - # Reads token from defined file in container - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenFile: - enabled: false - bearerTokenFilePath: "/var/run/secrets/kubernetes.io/serviceaccount/token" - # Reads token from defined secret in namespace - # This function is deprecated in the prometheus operator api and may be removed in a future version - bearerTokenSecret: - enabled: false - # Reads token from defined secret in namespace - authorization: - enabled: false - type: "bearer" - credentials: - key: "token" - optional: 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: "" - # seLinuxOptions to be passed into the container that copies certs. Should define a container with permissions to read the files in the certDir provided on the host. - # Required and only used if `clients.https.enabled` is set and `clients.https.certDir` is provided. - seLinuxOptions: {} - - metrics: - # Whether the client should publish PushProx client-specific metrics to .Values.clients.port - enabled: false - - 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.3-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.3-rancher2-proxy - command: ["pushprox-proxy"] diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/.helmignore b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/.helmignore deleted file mode 100644 index f0c1319..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/.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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/Chart.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/Chart.yaml deleted file mode 100644 index 784bb0e..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/Chart.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: v2 -appVersion: 0.25.1 -description: A Helm chart for prometheus windows-exporter -home: https://github.com/prometheus-community/windows_exporter/ -keywords: -- windows-exporter -- windows -- prometheus -- exporter -maintainers: -- email: github@jkroepke.de - name: jkroepke -name: windowsExporter -sources: -- https://github.com/prometheus-community/windows_exporter/ -type: application -version: 0.3.1 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/README.md b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/README.md deleted file mode 100644 index 1da1c64..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/README.md +++ /dev/null @@ -1,42 +0,0 @@ -# Prometheus `Windows Exporter` - -Prometheus exporter for hardware and OS metrics exposed by Windows kernels, written in Go with pluggable metric collectors. - -This chart bootstraps a prometheus [`Windows Exporter`](http://github.com/prometheus-community/windows_exporter) daemonset on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. - -## Get Repository 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 install [RELEASE_NAME] prometheus-community/prometheus-windows-exporter -``` - -_See [configuration](#configuring) below._ - -_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._ - -## Uninstall Chart - -```console -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._ - -## 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 show values prometheus-community/prometheus-windows-exporter -``` diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/scripts/configure-firewall.ps1 b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/scripts/configure-firewall.ps1 deleted file mode 100644 index 9cbed71..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/scripts/configure-firewall.ps1 +++ /dev/null @@ -1,31 +0,0 @@ -$ErrorActionPreference = 'Continue' - -function CheckFirewallRuleError { - # We hit an error. This can happen for a number of reasons, including if the rule already exists - if ($error[0]) { - if (($error[0].Exception.NativeErrorCode) -and ($error[0].Exception.NativeErrorCode.ToString() -eq "AlreadyExists")) { - # Previous versions of monitoring may have already created this Firewall Rule - # Because of this, if the rule alreadys exists there is no need to delete and recreate it. - Write-Host "Detected Existing Firewall Rule, Nothing To Do" - } else { - Write-Host "Error Encountered Setting Up Required Firewall Rule" - $error[0].Exception - exit 1 - } - } -} - -Write-Host "Attempting To Configure Firewall Rules For Ports 9796, 10250" - -# This is the exact same firewall rule that has historically been created by rancher-wins -# https://github.com/rancher/wins/blob/91f670c47f19c6d9fe97d8f66a695d3081ad994f/pkg/apis/process_service_mgmt.go#L149 -New-NetFirewallRule -DisplayName rancher-wins-windows-exporter-TCP-9796 -Name rancher-wins-windows-exporter-TCP-9796 -Action Allow -Protocol TCP -LocalPort 9796 -Enabled True -PolicyStore ActiveStore -CheckFirewallRuleError -Write-Host "Windows Node Exporter Firewall Rule Successfully Created" - -# This rule is required in order to have the Rancher UI display node metrics in the 'Nodes' tab of the cluster explorer -New-NetFirewallRule -DisplayName rancher-wins-windows-exporter-TCP-10250 -Name rancher-wins-windows-exporter-TCP-10250 -Action Allow -Protocol TCP -LocalPort 10250 -Enabled True -PolicyStore ActiveStore -CheckFirewallRuleError -Write-Host "Windows Prometheus Metrics Firewall Rule Successfully Created" - -Write-Host "All Firewall Rules Successfully Configured" diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/_helpers.tpl deleted file mode 100644 index c9a5d6d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/_helpers.tpl +++ /dev/null @@ -1,216 +0,0 @@ -{{/* -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 "prometheus-windows-exporter.fullname" -}} -{{ printf "%s-windows-exporter" .Release.Name }} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -{{- define "windowsExporter.renamedMetricsRelabeling" -}} -{{- range $original, $new := (include "windowsExporter.renamedMetrics" . | fromJson) -}} -- sourceLabels: [__name__] - regex: {{ $original }} - replacement: '{{ $new }}' - targetLabel: __name__ -{{ end -}} -{{- end -}} - -{{- define "windowsExporter.labels" -}} -k8s-app: {{ template "prometheus-windows-exporter.fullname" . }} -release: {{ .Release.Name }} -component: "windows-exporter" -provider: kubernetes -{{- end -}} - -{{- define "windowsExporter.renamedMetrics" -}} -{{- $renamed := dict -}} -{{/* v0.15.0 */}} -{{- $_ := set $renamed "windows_mssql_transactions_active_total" "windows_mssql_transactions_active" -}} -{{/* v0.16.0 */}} -{{- $_ := set $renamed "windows_adfs_ad_login_connection_failures" "windows_adfs_ad_login_connection_failures_total" -}} -{{- $_ := set $renamed "windows_adfs_certificate_authentications" "windows_adfs_certificate_authentications_total" -}} -{{- $_ := set $renamed "windows_adfs_device_authentications" "windows_adfs_device_authentications_total" -}} -{{- $_ := set $renamed "windows_adfs_extranet_account_lockouts" "windows_adfs_extranet_account_lockouts_total" -}} -{{- $_ := set $renamed "windows_adfs_federated_authentications" "windows_adfs_federated_authentications_total" -}} -{{- $_ := set $renamed "windows_adfs_passport_authentications" "windows_adfs_passport_authentications_total" -}} -{{- $_ := set $renamed "windows_adfs_password_change_failed" "windows_adfs_password_change_failed_total" -}} -{{- $_ := set $renamed "windows_adfs_password_change_succeeded" "windows_adfs_password_change_succeeded_total" -}} -{{- $_ := set $renamed "windows_adfs_token_requests" "windows_adfs_token_requests_total" -}} -{{- $_ := set $renamed "windows_adfs_windows_integrated_authentications" "windows_adfs_windows_integrated_authentications_total" -}} -{{- $_ := set $renamed "windows_net_packets_outbound_errors" "windows_net_packets_outbound_errors_total" -}} -{{- $_ := set $renamed "windows_net_packets_received_discarded" "windows_net_packets_received_discarded_total" -}} -{{- $_ := set $renamed "windows_net_packets_received_errors" "windows_net_packets_received_errors_total" -}} -{{- $_ := set $renamed "windows_net_packets_received_total" "windows_net_packets_received_total_total" -}} -{{- $_ := set $renamed "windows_net_packets_received_unknown" "windows_net_packets_received_unknown_total" -}} -{{- $_ := set $renamed "windows_dns_memory_used_bytes_total" "windows_dns_memory_used_bytes" -}} -{{- $renamed | toJson -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "prometheus-windows-exporter.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "prometheus-windows-exporter.labels" -}} -helm.sh/chart: {{ include "prometheus-windows-exporter.chart" . }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/component: metrics -app.kubernetes.io/part-of: {{ include "prometheus-windows-exporter.name" . }} -{{ include "prometheus-windows-exporter.selectorLabels" . }} -{{- with .Chart.AppVersion }} -app.kubernetes.io/version: {{ . | quote }} -{{- end }} -{{- with .Values.podLabels }} -{{ toYaml . }} -{{- end }} -{{- if .Values.releaseLabel }} -release: {{ .Release.Name }} -{{- end }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "prometheus-windows-exporter.selectorLabels" -}} -app.kubernetes.io/name: {{ include "prometheus-windows-exporter.fullname" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - - -{{/* -Create the name of the service account to use -*/}} -{{- define "prometheus-windows-exporter.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "prometheus-windows-exporter.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} - -{{/* -The image to use -*/}} -{{- define "prometheus-windows-exporter.image" -}} -{{- if .Values.image.sha }} -{{- fail "image.sha forbidden. Use image.digest instead" }} -{{- else if .Values.image.digest }} -{{- if .Values.global.cattle.systemDefaultRegistry }} -{{- printf "%s/%s:%s@%s" .Values.global.cattle.systemDefaultRegistry .Values.image.repository (default .Chart.AppVersion .Values.image.tag) .Values.image.digest }} -{{- else }} -{{- printf "%s/%s:%s@%s" .Values.image.registry .Values.image.repository (default .Chart.AppVersion .Values.image.tag) .Values.image.digest }} -{{- end }} -{{- else }} -{{- if .Values.global.cattle.systemDefaultRegistry }} -{{- printf "%s/%s:%s" .Values.global.cattle.systemDefaultRegistry .Values.image.repository (default .Chart.AppVersion .Values.image.tag) }} -{{- else }} -{{- printf "%s/%s:%s" .Values.image.registry .Values.image.repository (default .Chart.AppVersion .Values.image.tag) }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Allow the release namespace to be overridden for multi-namespace deployments in combined charts -*/}} -{{- define "prometheus-windows-exporter.namespace" -}} -{{- if .Values.namespaceOverride }} -{{- .Values.namespaceOverride }} -{{- else }} -{{- .Release.Namespace }} -{{- end }} -{{- end }} - -{{/* -Create the namespace name of the service monitor -*/}} -{{- define "prometheus-windows-exporter.monitor-namespace" -}} -{{- if .Values.namespaceOverride }} -{{- .Values.namespaceOverride }} -{{- else }} -{{- if .Values.prometheus.monitor.namespace }} -{{- .Values.prometheus.monitor.namespace }} -{{- else }} -{{- .Release.Namespace }} -{{- end }} -{{- end }} -{{- end }} - -{{/* Sets default scrape limits for servicemonitor */}} -{{- define "servicemonitor.scrapeLimits" -}} -{{- with .sampleLimit }} -sampleLimit: {{ . }} -{{- end }} -{{- with .targetLimit }} -targetLimit: {{ . }} -{{- end }} -{{- with .labelLimit }} -labelLimit: {{ . }} -{{- end }} -{{- with .labelNameLengthLimit }} -labelNameLengthLimit: {{ . }} -{{- end }} -{{- with .labelValueLengthLimit }} -labelValueLengthLimit: {{ . }} -{{- end }} -{{- end }} - -{{/* -Formats imagePullSecrets. Input is (dict "Values" .Values "imagePullSecrets" .{specific imagePullSecrets}) -*/}} -{{- define "prometheus-windows-exporter.imagePullSecrets" -}} -{{- range (concat .Values.global.imagePullSecrets .imagePullSecrets) }} - {{- if eq (typeOf .) "map[string]interface {}" }} -- {{ toYaml . | trim }} - {{- else }} -- name: {{ . }} - {{- end }} -{{- end }} -{{- end -}} - -{{/* -Create the namespace name of the pod monitor -*/}} -{{- define "prometheus-windows-exporter.podmonitor-namespace" -}} -{{- if .Values.namespaceOverride }} -{{- .Values.namespaceOverride }} -{{- else }} -{{- if .Values.prometheus.podMonitor.namespace }} -{{- .Values.prometheus.podMonitor.namespace }} -{{- else }} -{{- .Release.Namespace }} -{{- end }} -{{- end }} -{{- end }} - -{{/* Sets default scrape limits for podmonitor */}} -{{- define "podmonitor.scrapeLimits" -}} -{{- with .sampleLimit }} -sampleLimit: {{ . }} -{{- end }} -{{- with .targetLimit }} -targetLimit: {{ . }} -{{- end }} -{{- with .labelLimit }} -labelLimit: {{ . }} -{{- end }} -{{- with .labelNameLengthLimit }} -labelNameLengthLimit: {{ . }} -{{- end }} -{{- with .labelValueLengthLimit }} -labelValueLengthLimit: {{ . }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/config.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/config.yaml deleted file mode 100644 index 25f1fa6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/config.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "prometheus-windows-exporter.fullname" . }} - namespace: {{ include "prometheus-windows-exporter.namespace" . }} - labels: - {{- include "windowsExporter.labels" $ | nindent 4 }} - {{- with .Values.service.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -data: - config.yml: | - {{- .Values.config | nindent 4 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/daemonset.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/daemonset.yaml deleted file mode 100644 index be7feb3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/daemonset.yaml +++ /dev/null @@ -1,200 +0,0 @@ -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: {{ include "prometheus-windows-exporter.fullname" . }} - namespace: {{ include "prometheus-windows-exporter.namespace" . }} - labels: - {{- include "windowsExporter.labels" . | nindent 4 }} - {{- with .Values.daemonsetAnnotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - selector: - matchLabels: - {{- include "windowsExporter.labels" . | nindent 6 }} - {{- with .Values.updateStrategy }} - updateStrategy: - {{- toYaml . | nindent 4 }} - {{- end }} - template: - metadata: - {{- with .Values.podAnnotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - labels: - {{- include "windowsExporter.labels" . | nindent 8 }} - spec: - automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }} - {{- with .Values.securityContext }} - securityContext: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.priorityClassName }} - priorityClassName: {{ . }} - {{- end }} - initContainers: - - name: configure-firewall - image: {{ include "prometheus-windows-exporter.image" . }} - command: - - C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe - args: ["-f", "scripts/configure-firewall.ps1"] - volumeMounts: - - mountPath: /scripts - name: exporter-scripts - {{- with .Values.extraInitContainers }} - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "prometheus-windows-exporter.fullname" . }} - containers: - - name: windows-exporter - image: {{ include "prometheus-windows-exporter.image" . }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - args: - - --config.file=%CONTAINER_SANDBOX_MOUNT_POINT%/config.yml - - --collector.textfile.directories=%CONTAINER_SANDBOX_MOUNT_POINT% - - --web.listen-address=:{{ .Values.service.port }} - {{- with .Values.extraArgs }} - {{- toYaml . | nindent 12 }} - {{- end }} - {{- with .Values.securityContext }} - securityContext: - {{- toYaml . | nindent 12 }} - {{- end }} - env: - {{- range $key, $value := .Values.env }} - - name: {{ $key }} - value: {{ $value | quote }} - {{- end }} - ports: - - name: http - containerPort: {{ .Values.service.port }} - hostPort: {{ .Values.service.port }} - protocol: TCP - livenessProbe: - failureThreshold: {{ .Values.livenessProbe.failureThreshold }} - httpGet: - httpHeaders: - {{- range $_, $header := .Values.livenessProbe.httpGet.httpHeaders }} - - name: {{ $header.name }} - value: {{ $header.value }} - {{- end }} - path: / - port: {{ .Values.service.port }} - scheme: {{ upper .Values.livenessProbe.httpGet.scheme }} - initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.livenessProbe.periodSeconds }} - successThreshold: {{ .Values.livenessProbe.successThreshold }} - timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} - readinessProbe: - failureThreshold: {{ .Values.readinessProbe.failureThreshold }} - httpGet: - httpHeaders: - {{- range $_, $header := .Values.readinessProbe.httpGet.httpHeaders }} - - name: {{ $header.name }} - value: {{ $header.value }} - {{- end }} - path: / - port: {{ .Values.service.port }} - scheme: {{ upper .Values.readinessProbe.httpGet.scheme }} - initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.readinessProbe.periodSeconds }} - successThreshold: {{ .Values.readinessProbe.successThreshold }} - timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} - {{- with .Values.resources }} - resources: - {{- toYaml . | nindent 12 }} - {{- end }} - volumeMounts: - - name: config - mountPath: /config.yml - subPath: config.yml - {{- range $_, $mount := .Values.extraHostVolumeMounts }} - - name: {{ $mount.name }} - mountPath: {{ $mount.mountPath }} - readOnly: {{ $mount.readOnly }} - {{- end }} - {{- range $_, $mount := .Values.sidecarVolumeMount }} - - name: {{ $mount.name }} - mountPath: {{ $mount.mountPath }} - readOnly: true - {{- end }} - {{- range $_, $mount := .Values.configmaps }} - - name: {{ $mount.name }} - mountPath: {{ $mount.mountPath }} - {{- end }} - {{- range $_, $mount := .Values.secrets }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - {{- end }} - {{- with .Values.sidecars }} - {{- toYaml . | nindent 8 }} - {{- if or .Values.sidecarVolumeMount .Values.sidecarHostVolumeMounts }} - volumeMounts: - {{- range $_, $mount := .Values.sidecarVolumeMount }} - - name: {{ $mount.name }} - mountPath: {{ $mount.mountPath }} - readOnly: {{ $mount.readOnly }} - {{- end }} - {{- range $_, $mount := .Values.sidecarHostVolumeMounts }} - - name: {{ $mount.name }} - mountPath: {{ $mount.mountPath }} - readOnly: {{ $mount.readOnly }} - {{- end }} - {{- end }} - {{- end }} - {{- if or .Values.imagePullSecrets .Values.global.imagePullSecrets }} - imagePullSecrets: - {{- include "prometheus-windows-exporter.imagePullSecrets" (dict "Values" .Values "imagePullSecrets" .Values.imagePullSecrets) | indent 8 }} - {{- end }} - hostNetwork: {{ .Values.hostNetwork }} - hostPID: {{ .Values.hostPID }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.dnsConfig }} - dnsConfig: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - volumes: - - name: exporter-scripts - configMap: - name: {{ include "prometheus-windows-exporter.fullname" . }}-scripts - - name: config - configMap: - name: {{ include "prometheus-windows-exporter.fullname" . }} - {{- range $_, $mount := .Values.extraHostVolumeMounts }} - - name: {{ $mount.name }} - hostPath: - path: {{ $mount.hostPath }} - {{- end }} - {{- range $_, $mount := .Values.sidecarVolumeMount }} - - name: {{ $mount.name }} - emptyDir: - medium: Memory - {{- end }} - {{- range $_, $mount := .Values.sidecarHostVolumeMounts }} - - name: {{ $mount.name }} - hostPath: - path: {{ $mount.hostPath }} - {{- end }} - {{- range $_, $mount := .Values.configmaps }} - - name: {{ $mount.name }} - configMap: - name: {{ $mount.name }} - {{- end }} - {{- range $_, $mount := .Values.secrets }} - - name: {{ $mount.name }} - secret: - secretName: {{ $mount.name }} - {{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/podmonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/podmonitor.yaml deleted file mode 100644 index bbb6c39..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/podmonitor.yaml +++ /dev/null @@ -1,91 +0,0 @@ -{{- if .Values.prometheus.podMonitor.enabled }} -apiVersion: {{ .Values.prometheus.podMonitor.apiVersion | default "monitoring.coreos.com/v1" }} -kind: PodMonitor -metadata: - name: {{ include "prometheus-windows-exporter.fullname" . }} - namespace: {{ include "prometheus-windows-exporter.podmonitor-namespace" . }} - labels: - {{- include "windowsExporter.labels" . | nindent 4 }} - {{- with .Values.prometheus.podMonitor.additionalLabels }} - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - jobLabel: {{ default "app.kubernetes.io/name" .Values.prometheus.podMonitor.jobLabel }} - {{- include "podmonitor.scrapeLimits" .Values.prometheus.podMonitor | nindent 2 }} - selector: - matchLabels: - {{- with .Values.prometheus.podMonitor.selectorOverride }} - {{- toYaml . | nindent 6 }} - {{- else }} - {{- include "prometheus-windows-exporter.selectorLabels" . | nindent 6 }} - {{- end }} - namespaceSelector: - matchNames: - - {{ include "prometheus-windows-exporter.namespace" . }} - {{- with .Values.prometheus.podMonitor.attachMetadata }} - attachMetadata: - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.prometheus.podMonitor.podTargetLabels }} - podTargetLabels: - {{- toYaml . | nindent 4 }} - {{- end }} - podMetricsEndpoints: - - port: {{ .Values.service.portName }} - {{- with .Values.prometheus.podMonitor.scheme }} - scheme: {{ . }} - {{- end }} - {{- with .Values.prometheus.podMonitor.path }} - path: {{ . }} - {{- end }} - {{- with .Values.prometheus.podMonitor.basicAuth }} - basicAuth: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.prometheus.podMonitor.bearerTokenSecret }} - bearerTokenSecret: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.prometheus.podMonitor.tlsConfig }} - tlsConfig: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.prometheus.podMonitor.authorization }} - authorization: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.prometheus.podMonitor.oauth2 }} - oauth2: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.prometheus.podMonitor.proxyUrl }} - proxyUrl: {{ . }} - {{- end }} - {{- with .Values.prometheus.podMonitor.interval }} - interval: {{ . }} - {{- end }} - {{- with .Values.prometheus.podMonitor.honorTimestamps }} - honorTimestamps: {{ . }} - {{- end }} - {{- with .Values.prometheus.podMonitor.honorLabels }} - honorLabels: {{ . }} - {{- end }} - {{- with .Values.prometheus.podMonitor.scrapeTimeout }} - scrapeTimeout: {{ . }} - {{- end }} - {{- with .Values.prometheus.podMonitor.relabelings }} - relabelings: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.prometheus.podMonitor.metricRelabelings }} - metricRelabelings: - {{- toYaml . | nindent 8 }} - {{- end }} - enableHttp2: {{ default false .Values.prometheus.podMonitor.enableHttp2 }} - filterRunning: {{ default true .Values.prometheus.podMonitor.filterRunning }} - followRedirects: {{ default false .Values.prometheus.podMonitor.followRedirects }} - {{- with .Values.prometheus.podMonitor.params }} - params: - {{- toYaml . | nindent 8 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/scriptConfig.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/scriptConfig.yaml deleted file mode 100644 index f514c81..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/scriptConfig.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "prometheus-windows-exporter.fullname" . }}-scripts - namespace: {{ include "prometheus-windows-exporter.namespace" . }} - labels: - {{- include "windowsExporter.labels" $ | nindent 4 }} - {{- with .Values.service.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -data: -{{ (.Files.Glob "scripts/*").AsConfig | indent 2 }} - diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/service.yaml deleted file mode 100644 index 267b796..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/service.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "prometheus-windows-exporter.fullname" . }} - namespace: {{ include "prometheus-windows-exporter.namespace" . }} - labels: - {{- include "windowsExporter.labels" $ | nindent 4 }} - {{- if or .Values.prometheus.monitor.enabled .Values.prometheus.podMonitor.enabled }} - {{- with .Values.service.annotations }} - annotations: - {{- unset . "prometheus.io/scrape" | toYaml | nindent 4 }} - {{- end }} - {{- else }} - annotations: - prometheus.io/scrape: "true" - {{- with .Values.service.annotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - {{- end }} -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.port }} - protocol: TCP - appProtocol: http - name: {{ .Values.service.portName }} - selector: - {{- include "windowsExporter.labels" . | nindent 4 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/serviceaccount.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/serviceaccount.yaml deleted file mode 100644 index 14c1c46..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/serviceaccount.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if and .Values.rbac.create .Values.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "prometheus-windows-exporter.serviceAccountName" . }} - namespace: {{ include "prometheus-windows-exporter.namespace" . }} - labels: - {{- include "windowsExporter.labels" . | nindent 4 }} - {{- with .Values.serviceAccount.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- if or .Values.serviceAccount.imagePullSecrets .Values.global.imagePullSecrets }} -imagePullSecrets: - {{- include "prometheus-windows-exporter.imagePullSecrets" (dict "Values" .Values "imagePullSecrets" .Values.serviceAccount.imagePullSecrets) | indent 2 }} -{{- end }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/servicemonitor.yaml deleted file mode 100644 index 2effc07..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/templates/servicemonitor.yaml +++ /dev/null @@ -1,75 +0,0 @@ -{{- if .Values.prometheus.monitor.enabled }} -apiVersion: {{ .Values.prometheus.monitor.apiVersion | default "monitoring.coreos.com/v1" }} -kind: ServiceMonitor -metadata: - name: {{ include "prometheus-windows-exporter.fullname" . }} - namespace: {{ include "prometheus-windows-exporter.monitor-namespace" . }} - labels: - {{- include "windowsExporter.labels" . | nindent 4 }} - {{- with .Values.prometheus.monitor.additionalLabels }} - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - jobLabel: {{ default "app.kubernetes.io/name" .Values.prometheus.monitor.jobLabel }} - {{- include "servicemonitor.scrapeLimits" .Values.prometheus.monitor | nindent 2 }} - {{- with .Values.prometheus.monitor.podTargetLabels }} - podTargetLabels: - {{- toYaml . | nindent 4 }} - {{- end }} - selector: - matchLabels: - {{- with .Values.prometheus.monitor.selectorOverride }} - {{- toYaml . | nindent 6 }} - {{- else }} - {{- include "windowsExporter.labels" . | nindent 6 }} - {{- end }} - {{- with .Values.prometheus.monitor.attachMetadata }} - attachMetadata: - {{- toYaml . | nindent 4 }} - {{- end }} - endpoints: - - port: {{ .Values.service.portName }} - scheme: {{ .Values.prometheus.monitor.scheme }} - {{- with .Values.prometheus.monitor.basicAuth }} - basicAuth: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.prometheus.monitor.bearerTokenFile }} - bearerTokenFile: {{ . }} - {{- end }} - {{- with .Values.prometheus.monitor.tlsConfig }} - tlsConfig: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.prometheus.monitor.proxyUrl }} - proxyUrl: {{ . }} - {{- end }} - {{- with .Values.prometheus.monitor.interval }} - interval: {{ . }} - {{- end }} - {{- with .Values.prometheus.monitor.scrapeTimeout }} - scrapeTimeout: {{ . }} - {{- end }} - metricRelabelings: -{{- include "windowsExporter.renamedMetricsRelabeling" . | nindent 6 -}} - - sourceLabels: [__name__] - regex: 'wmi_(.*)' - replacement: 'windows_$1' - 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 }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/values.yaml deleted file mode 100644 index 0456950..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/charts/windowsExporter/values.yaml +++ /dev/null @@ -1,366 +0,0 @@ -# Default values for prometheus-windows-exporter. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -image: - registry: docker.io - repository: rancher/mirrored-prometheus-windows-exporter - # Overrides the image tag whose default is {{ printf "v%s" .Chart.AppVersion }} - tag: "0.25.1" - pullPolicy: IfNotPresent - digest: "" - -config: |- - collectors: - enabled: '[defaults],tcp,memory,container' - -imagePullSecrets: [] -# - name: "image-pull-secret" -nameOverride: "" -fullnameOverride: "" - -global: - # To help compatibility with other charts which use global.imagePullSecrets. - # Allow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style). - # global: - # imagePullSecrets: - # - name: pullSecret1 - # - name: pullSecret2 - # or - # global: - # imagePullSecrets: - # - pullSecret1 - # - pullSecret2 - imagePullSecrets: [] - cattle: - systemDefaultRegistry: "" - -service: - type: ClusterIP - port: 9796 - nodePort: - portName: windows-metrics - annotations: {} - -# Additional environment variables that will be passed to the daemonset -env: {} -## env: -## VARIABLE: value - -prometheus: - monitor: - enabled: true - additionalLabels: {} - namespace: "" - - jobLabel: "component" - - # List of pod labels to add to windows exporter metrics - # https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitor - podTargetLabels: ["component"] - - scheme: http - basicAuth: {} - bearerTokenFile: - tlsConfig: {} - - ## proxyUrl: URL of a proxy that should be used for scraping. - ## - proxyUrl: "" - - ## Override serviceMonitor selector - ## - selectorOverride: {} - - ## Attach node metadata to discovered targets. Requires Prometheus v2.35.0 and above. - ## - attachMetadata: - node: false - - relabelings: [] - metricRelabelings: [] - interval: "" - scrapeTimeout: 10s - ## prometheus.monitor.apiVersion ApiVersion for the serviceMonitor Resource(defaults to "monitoring.coreos.com/v1") - apiVersion: "" - - ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - ## - sampleLimit: 0 - - ## TargetLimit defines a limit on the number of scraped targets that will be accepted. - ## - targetLimit: 0 - - ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelLimit: 0 - - ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelNameLengthLimit: 0 - - ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelValueLengthLimit: 0 - - # PodMonitor defines monitoring for a set of pods. - # ref. https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.PodMonitor - # Using a PodMonitor may be preferred in some environments where there is very large number - # of Windows Exporter endpoints (1000+) behind a single service. - # The PodMonitor is disabled by default. When switching from ServiceMonitor to PodMonitor, - # the time series resulting from the configuration through PodMonitor may have different labels. - # For instance, there will not be the service label any longer which might - # affect PromQL queries selecting that label. - podMonitor: - enabled: false - # Namespace in which to deploy the pod monitor. Defaults to the release namespace. - namespace: "" - # Additional labels, e.g. setting a label for pod monitor selector as set in prometheus - additionalLabels: {} - # release: kube-prometheus-stack - # PodTargetLabels transfers labels of the Kubernetes Pod onto the target. - podTargetLabels: [] - # apiVersion defaults to monitoring.coreos.com/v1. - apiVersion: "" - # Override pod selector to select pod objects. - selectorOverride: {} - # Attach node metadata to discovered targets. Requires Prometheus v2.35.0 and above. - attachMetadata: - node: false - # The label to use to retrieve the job name from. Defaults to label app.kubernetes.io/name. - jobLabel: "" - - # Scheme/protocol to use for scraping. - scheme: "http" - # Path to scrape metrics at. - path: "/metrics" - - # BasicAuth allow an endpoint to authenticate over basic authentication. - # More info: https://prometheus.io/docs/operating/configuration/#endpoint - basicAuth: {} - # 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. - # https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#secretkeyselector-v1-core - bearerTokenSecret: {} - # TLS configuration to use when scraping the endpoint. - tlsConfig: {} - # Authorization section for this endpoint. - # https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.SafeAuthorization - authorization: {} - # OAuth2 for the URL. Only valid in Prometheus versions 2.27.0 and newer. - # https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.OAuth2 - oauth2: {} - - # ProxyURL eg http://proxyserver:2195. Directs scrapes through proxy to this endpoint. - proxyUrl: "" - # Interval at which endpoints should be scraped. If not specified Prometheus’ global scrape interval is used. - interval: "" - # Timeout after which the scrape is ended. If not specified, the Prometheus global scrape interval is used. - scrapeTimeout: "" - # HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data. - honorTimestamps: true - # HonorLabels chooses the metric’s labels on collisions with target labels. - honorLabels: true - # Whether to enable HTTP2. Default false. - enableHttp2: "" - # Drop pods that are not running. (Failed, Succeeded). - # Enabled by default. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase - filterRunning: "" - # FollowRedirects configures whether scrape requests follow HTTP 3xx redirects. Default false. - followRedirects: "" - # Optional HTTP URL parameters - params: {} - - # RelabelConfigs to apply to samples before scraping. Prometheus Operator automatically adds - # relabelings for a few standard Kubernetes fields. The original scrape job’s name - # is available via the __tmp_prometheus_job_name label. - # More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config - relabelings: [] - # MetricRelabelConfigs to apply to samples before ingestion. - metricRelabelings: [] - - # SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - sampleLimit: 0 - # TargetLimit defines a limit on the number of scraped targets that will be accepted. - targetLimit: 0 - # Per-scrape limit on number of labels that will be accepted for a sample. - # Only valid in Prometheus versions 2.27.0 and newer. - labelLimit: 0 - # Per-scrape limit on length of labels name that will be accepted for a sample. - # Only valid in Prometheus versions 2.27.0 and newer. - labelNameLengthLimit: 0 - # Per-scrape limit on length of labels value that will be accepted for a sample. - # Only valid in Prometheus versions 2.27.0 and newer. - labelValueLengthLimit: 0 - -## 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: [] - automountServiceAccountToken: false - -securityContext: - windowsOptions: - hostProcess: true - runAsUserName: "NT AUTHORITY\\system" - -rbac: - ## If true, create & use RBAC resources - ## - create: true - -# Expose the service to the host network -hostNetwork: true - -# Share the host process ID namespace -hostPID: 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 windows exporter pods -podAnnotations: - # Fix for very slow GKE cluster upgrades - cluster-autoscaler.kubernetes.io/safe-to-evict: "true" - -# Extra labels to be added to windows exporter pods -podLabels: {} - -# Annotations to be added to windows exporter daemonset -daemonsetAnnotations: {} - -## set to true to add the release label so scraping of the servicemonitor with kube-prometheus-stack works out of the box -releaseLabel: false - -# Custom DNS configuration to be added to prometheus-windows-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: - kubernetes.io/os: windows - # kubernetes.io/arch: amd64 - -tolerations: - - effect: NoSchedule - operator: Exists - -## Assign a PriorityClassName to pods if set -# priorityClassName: "" - -## Additional container arguments -## -extraArgs: [] -# - --collector.service.services-where -# - "Name LIKE 'sql%'" - -## Additional mounts from the host to windows-exporter container -## -extraHostVolumeMounts: [] -# - name: -# hostPath: -# mountPath: -# readOnly: true|false - -## 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 - -## Additional mounts from the host to sidecar containers -## -sidecarHostVolumeMounts: [] -# - name: -# hostPath: -# mountPath: -# readOnly: true|false -# mountPropagation: None|HostToContainer|Bidirectional - -## Additional InitContainers to initialize the pod -## -extraInitContainers: [] - -## Liveness probe -## -livenessProbe: - failureThreshold: 3 - httpGet: - httpHeaders: [] - scheme: http - initialDelaySeconds: 0 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 - -## Readiness probe -## -readinessProbe: - failureThreshold: 3 - httpGet: - httpHeaders: [] - scheme: http - initialDelaySeconds: 0 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/custom-values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/custom-values.yaml deleted file mode 100644 index b402ed2..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/custom-values.yaml +++ /dev/null @@ -1,68 +0,0 @@ -global: - cattle: - clusterId: local - clusterName: local - -grafana: - resources: - requests: - cpu: 100m - memory: 100Mi - limits: - cpu: 200m - memory: 200Mi - -prometheus: - prometheusSpec: - resources: - requests: - cpu: 250m - memory: 100Mi - limits: - cpu: 1000m - memory: 2000Mi - scrapeInterval: 1m - evaluationInterval: 1m - retention: 30d - retentionSize: 10GB ## 해당 설정에 Gi 입력 시 에러 발생 - storageSpec: - volumeClaimTemplate: - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi - storageClassName: longhorn - volumeMode: Filesystem - -alertmanager: - alertmanagerSpec: - resources: - requests: - cpu: 100m - memory: 100Mi - limits: - cpu: 1000m - memory: 500Mi - -# rke2 클러스터 시 enable 한다. -# rke2ControllerManager: -# enabled: true -# rke2Etcd: -# enabled: true -# rke2Proxy: -# enabled: true -# rke2Scheduler: -# enabled: true -# rke2IngressNginx: -# enabled: true - -# helm 배포한 ingressNginx가 배포되어 있을 때 사용한다. -# ingressNginx: -# enabled: true - -# Windows 노드를 사용하지 않으므로 windowsExporter 제외. -# (Windows 이미지라 Linux 에서 trivy 스캔도 불가 → SBOM 대상에서 제외) -windowsExporter: - enabled: false \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/ingress-nginx/nginx.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/ingress-nginx/nginx.json deleted file mode 100644 index 5653522..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/ingress-nginx/nginx.json +++ /dev/null @@ -1,1445 +0,0 @@ -{ - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - }, - { - "datasource": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": ".*", - "current": { - "text": "All", - "value": "$__all" - }, - "datasource": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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_pod=~\"$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 -} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/ingress-nginx/request-handling-performance.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/ingress-nginx/request-handling-performance.json deleted file mode 100644 index 156e331..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/ingress-nginx/request-handling-performance.json +++ /dev/null @@ -1,963 +0,0 @@ -{ - "__inputs": [ - - ], - "__requires": [ - - ], - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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 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": "$datasource", - "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": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": ".*", - "current": {}, - "datasource": "$datasource", - "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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/cluster/rancher-cluster-nodes.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/cluster/rancher-cluster-nodes.json deleted file mode 100644 index 1d49435..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/cluster/rancher-cluster-nodes.json +++ /dev/null @@ -1,793 +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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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_total{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_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_total{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_total{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": "$datasource", - "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_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": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "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" - ] - }, - "timezone": "", - "title": "Rancher / Cluster (Nodes)", - "uid": "rancher-cluster-nodes-1", - "version": 3 -} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/cluster/rancher-cluster.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/cluster/rancher-cluster.json deleted file mode 100644 index 24385a2..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/cluster/rancher-cluster.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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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_total{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_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_total{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_total{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": "$datasource", - "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_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": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "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" - ] - }, - "timezone": "", - "title": "Rancher / Cluster", - "uid": "rancher-cluster-1", - "version": 3 -} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/bundle.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/bundle.json deleted file mode 100644 index 698f48a..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/bundle.json +++ /dev/null @@ -1,246 +0,0 @@ -{ - "description": "Bundle", - "graphTooltip": 1, - "panels": [ - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": "percentunit" - } - }, - "gridPos": { - "h": 5, - "w": 7, - "x": 0, - "y": 0 - }, - "id": 1, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_ready{exported_namespace=\"$namespace\",name=~\"$name\"}) / sum(fleet_bundle_desired_ready{exported_namespace=\"$namespace\",name=~\"$name\"})" - } - ], - "title": "Ready Bundles", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 5, - "w": 17, - "x": 7, - "y": 0 - }, - "id": 2, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_desired_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Desired Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_not_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Not Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_out_of_sync{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Out of Sync" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_err_applied{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Err Applied" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_modified{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Modified" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_pending{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Pending" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_wait_applied{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Wait Applied" - } - ], - "title": "Bundles", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 8 - }, - "id": 3, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_desired_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Desired Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_not_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Not Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_out_of_sync{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Out of Sync" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_err_applied{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Err Applied" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_modified{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Modified" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_pending{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Pending" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundle_wait_applied{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Wait Applied" - } - ], - "title": "Bundles", - "type": "timeseries" - } - ], - "schemaVersion": 39, - "templating": { - "list": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "name": "namespace", - "query": "label_values(fleet_bundle_desired_ready, exported_namespace)", - "refresh": 2, - "type": "query" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "includeAll": true, - "name": "name", - "query": "label_values(fleet_bundle_desired_ready{exported_namespace=~\"$namespace\"}, name)", - "refresh": 2, - "type": "query" - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timezone": "utc", - "title": "Fleet / Bundle", - "uid": "fleet-bundle" -} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/bundledeployment.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/bundledeployment.json deleted file mode 100644 index c81f7a6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/bundledeployment.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "description": "BundleDeployment", - "graphTooltip": 1, - "panels": [ - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": "percentunit" - } - }, - "gridPos": { - "h": 5, - "w": 7, - "x": 0, - "y": 0 - }, - "id": 1, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundledeployment_state{cluster_namespace=~\"$namespace\",state=\"Ready\"}) / sum(fleet_bundledeployment_state{cluster_namespace=~\"$namespace\"})" - } - ], - "title": "Ready BundleDeployments", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 5, - "w": 17, - "x": 7, - "y": 0 - }, - "id": 2, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundledeployment_state{cluster_namespace=~\"$namespace\",state=\"Ready\"})", - "legendFormat": "Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundledeployment_state{cluster_namespace=~\"$namespace\",state=\"NotReady\"})", - "legendFormat": "Not Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundledeployment_state{cluster_namespace=~\"$namespace\",state=\"WaitApplied\"})", - "legendFormat": "Wait Applied" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundledeployment_state{cluster_namespace=~\"$namespace\",state=\"ErrApplied\"})", - "legendFormat": "Err Applied" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundledeployment_state{cluster_namespace=~\"$namespace\",state=\"OutOfSync\"})", - "legendFormat": "OutOfSync" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundledeployment_state{cluster_namespace=~\"$namespace\",state=\"Pending\"})", - "legendFormat": "Pending" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundledeployment_state{cluster_namespace=~\"$namespace\",state=\"Modified\"})", - "legendFormat": "Modified" - } - ], - "title": "BundleDeployments", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 8 - }, - "id": 3, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundledeployment_state{cluster_namespace=~\"$namespace\",state=\"Ready\"})", - "legendFormat": "Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundledeployment_state{cluster_namespace=~\"$namespace\",state=\"NotReady\"})", - "legendFormat": "Not Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundledeployment_state{cluster_namespace=~\"$namespace\",state=\"WaitApplied\"})", - "legendFormat": "Wait Applied" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundledeployment_state{cluster_namespace=~\"$namespace\",state=\"ErrApplied\"})", - "legendFormat": "Err Applied" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundledeployment_state{cluster_namespace=~\"$namespace\",state=\"OutOfSync\"})", - "legendFormat": "OutOfSync" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundledeployment_state{cluster_namespace=~\"$namespace\",state=\"Pending\"})", - "legendFormat": "Pending" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_bundledeployment_state{cluster_namespace=~\"$namespace\",state=\"Modified\"})", - "legendFormat": "Modified" - } - ], - "title": "BundleDeployments", - "type": "timeseries" - } - ], - "schemaVersion": 39, - "templating": { - "list": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "name": "namespace", - "query": "label_values(fleet_bundledeployment_state, cluster_namespace)", - "refresh": 2, - "type": "query" - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timezone": "utc", - "title": "Fleet / BundleDeployment", - "uid": "fleet-bundledeployment" -} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/cluster.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/cluster.json deleted file mode 100644 index 73bdea4..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/cluster.json +++ /dev/null @@ -1,484 +0,0 @@ -{ - "description": "Cluster", - "graphTooltip": 1, - "panels": [ - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": "percentunit" - } - }, - "gridPos": { - "h": 5, - "w": 7, - "x": 0, - "y": 0 - }, - "id": 1, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_ready_git_repos{exported_namespace=\"$namespace\",name=~\"$name\"}) / sum(fleet_cluster_desired_ready_git_repos{exported_namespace=\"$namespace\",name=~\"$name\"})" - } - ], - "title": "Ready Git Repos", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 5, - "w": 17, - "x": 7, - "y": 0 - }, - "id": 2, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_desired_ready_git_repos{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Desired Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_ready_git_repos{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Ready" - } - ], - "title": "Git Repos", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 8 - }, - "id": 3, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_desired_ready_git_repos{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Desired Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_ready_git_repos{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Ready" - } - ], - "title": "Git Repos", - "type": "timeseries" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": "percentunit" - } - }, - "gridPos": { - "h": 5, - "w": 7, - "x": 0, - "y": 13 - }, - "id": 4, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_ready{exported_namespace=\"$namespace\",name=~\"$name\"}) / sum(fleet_cluster_resources_count_desiredready{exported_namespace=\"$namespace\",name=~\"$name\"})" - } - ], - "title": "Ready Resources", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 5, - "w": 17, - "x": 7, - "y": 13 - }, - "id": 5, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_desiredready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Desired Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_notready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Not Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_missing{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Missing" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_modified{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Modified" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_unknown{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Unknown" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_orphaned{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Orphaned" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_waitapplied{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Wait Applied" - } - ], - "title": "Resources", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 21 - }, - "id": 6, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_desiredready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Desired Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_notready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Not Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_missing{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Missing" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_modified{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Modified" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_unknown{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Unknown" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_orphaned{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Orphaned" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_resources_count_waitapplied{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Wait Applied" - } - ], - "title": "Resources", - "type": "timeseries" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": "percentunit" - } - }, - "gridPos": { - "h": 5, - "w": 7, - "x": 0, - "y": 26 - }, - "id": 7, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_state{exported_namespace=\"$namespace\",name=~\"$name\",state=\"Ready\"}) / sum(fleet_cluster_state{exported_namespace=\"$namespace\",name=~\"$name\"})" - } - ], - "title": "Ready Clusters", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 5, - "w": 17, - "x": 7, - "y": 26 - }, - "id": 8, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_state{exported_namespace=\"$namespace\",name=~\"$name\",state=\"Ready\"})", - "legendFormat": "Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_state{exported_namespace=\"$namespace\",name=~\"$name\",state=\"NotReady\"})", - "legendFormat": "Not Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_state{exported_namespace=\"$namespace\",name=~\"$name\",state=\"WaitCheckIn\"})", - "legendFormat": "Wait Check In" - } - ], - "title": "Clusters", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 34 - }, - "id": 9, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_state{exported_namespace=\"$namespace\",name=~\"$name\",state=\"Ready\"})", - "legendFormat": "Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_state{exported_namespace=\"$namespace\",name=~\"$name\",state=\"NotReady\"})", - "legendFormat": "Not Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_state{exported_namespace=\"$namespace\",name=~\"$name\",state=\"WaitCheckIn\"})", - "legendFormat": "Wait Check In" - } - ], - "title": "Clusters", - "type": "timeseries" - } - ], - "schemaVersion": 39, - "templating": { - "list": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "name": "namespace", - "query": "label_values(fleet_cluster_desired_ready_git_repos, exported_namespace)", - "refresh": 2, - "type": "query" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "includeAll": true, - "name": "name", - "query": "label_values(fleet_cluster_desired_ready_git_repos{exported_namespace=~\"$namespace\"}, name)", - "refresh": 2, - "type": "query" - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timezone": "utc", - "title": "Fleet / Cluster", - "uid": "fleet-cluster" -} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/clustergroup.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/clustergroup.json deleted file mode 100644 index ce3df87..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/clustergroup.json +++ /dev/null @@ -1,468 +0,0 @@ -{ - "description": "ClusterGroup", - "graphTooltip": 1, - "panels": [ - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": "percentunit" - } - }, - "gridPos": { - "h": 5, - "w": 7, - "x": 0, - "y": 0 - }, - "id": 1, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_bundle_ready{exported_namespace=\"$namespace\",name=~\"$name\"}) / sum(fleet_cluster_group_bundle_desired_ready{exported_namespace=\"$namespace\",name=~\"$name\"})" - } - ], - "title": "Ready Bundles", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 5, - "w": 17, - "x": 7, - "y": 0 - }, - "id": 2, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_bundle_desired_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Desired Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_bundle_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Ready" - } - ], - "title": "Bundles", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 8 - }, - "id": 3, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_bundle_desired_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Desired Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_bundle_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Ready" - } - ], - "title": "Bundles", - "type": "timeseries" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": "percentunit" - } - }, - "gridPos": { - "h": 5, - "w": 7, - "x": 0, - "y": 13 - }, - "id": 4, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "(sum(fleet_cluster_group_cluster_count{exported_namespace=\"$namespace\",name=~\"$name\"}) - sum(fleet_cluster_group_non_ready_cluster_count{exported_namespace=\"$namespace\",name=~\"$name\"})) / sum(fleet_cluster_group_cluster_count{exported_namespace=\"$namespace\",name=~\"$name\"})" - } - ], - "title": "Ready Clusters", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 5, - "w": 17, - "x": 7, - "y": 13 - }, - "id": 5, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_cluster_count{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Total" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_non_ready_cluster_count{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Non Ready" - } - ], - "title": "Clusters", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 21 - }, - "id": 6, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_cluster_count{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Total" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_non_ready_cluster_count{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Non Ready" - } - ], - "title": "Clusters", - "type": "timeseries" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": "percentunit" - } - }, - "gridPos": { - "h": 5, - "w": 7, - "x": 0, - "y": 26 - }, - "id": 7, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_ready{exported_namespace=\"$namespace\",name=~\"$name\"}) / sum(fleet_cluster_group_resource_count_desired_ready{exported_namespace=\"$namespace\",name=~\"$name\"})" - } - ], - "title": "Ready Resources", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 5, - "w": 17, - "x": 7, - "y": 26 - }, - "id": 8, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_desired_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Desired Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_notready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Not Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_missing{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Missing" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_modified{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Modified" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_orphaned{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Orphaned" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_unknown{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Unknown" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_waitapplied{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Wait Applied" - } - ], - "title": "Resources", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 34 - }, - "id": 9, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_desired_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Desired Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_notready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Not Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_missing{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Missing" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_modified{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Modified" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_orphaned{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Orphaned" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_unknown{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Unknown" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_cluster_group_resource_count_waitapplied{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Wait Applied" - } - ], - "title": "Resources", - "type": "timeseries" - } - ], - "schemaVersion": 39, - "templating": { - "list": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "name": "namespace", - "query": "label_values(fleet_cluster_group_bundle_desired_ready, exported_namespace)", - "refresh": 2, - "type": "query" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "includeAll": true, - "name": "name", - "query": "label_values(fleet_cluster_group_bundle_desired_ready{exported_namespace=~\"$namespace\"}, name)", - "refresh": 2, - "type": "query" - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timezone": "utc", - "title": "Fleet / ClusterGroup", - "uid": "fleet-cluster-group" -} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/controller-runtime.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/controller-runtime.json deleted file mode 100644 index 23a81f2..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/controller-runtime.json +++ /dev/null @@ -1,454 +0,0 @@ -{ - "description": "Controller Runtime", - "graphTooltip": 1, - "panels": [ - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 1, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "controller_runtime_active_workers{job=\"$job\", namespace=\"$namespace\"}", - "legendFormat": "{{controller}} {{instance}}" - } - ], - "title": "Number of Workers in Use", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": null, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 8 - }, - "id": 2, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(rate(controller_runtime_reconcile_errors_total{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, pod)", - "legendFormat": "{{instance}} {{pod}}" - } - ], - "title": "Reconciliation Error Count per Controller", - "type": "timeseries" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": null, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 16 - }, - "id": 3, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(rate(controller_runtime_reconcile_total{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, pod)", - "legendFormat": "{{instance}} {{pod}}" - } - ], - "title": "Total Reconciliation Count per Controller", - "type": "timeseries" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 24 - }, - "id": 4, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "workqueue_depth{job=\"$job\", namespace=\"$namespace\"}", - "legendFormat": "{{instance}} {{pod}}" - } - ], - "title": "WorkQueue Depth", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": null, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 32 - }, - "id": 5, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "histogram_quantile(0.50, sum(rate(workqueue_queue_duration_seconds_bucket{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, name, le))", - "legendFormat": "P50 {{name}}" - } - ], - "title": "Seconds for Items Stay in Queue (before being requested) P50", - "type": "timeseries" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": null, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 40 - }, - "id": 6, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "histogram_quantile(0.90, sum(rate(workqueue_queue_duration_seconds_bucket{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, name, le))", - "legendFormat": "P90 {{name}}" - } - ], - "title": "Seconds for Items Stay in Queue (before being requested) P90", - "type": "timeseries" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": null, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 48 - }, - "id": 7, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "histogram_quantile(0.99, sum(rate(workqueue_queue_duration_seconds_bucket{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, name, le))", - "legendFormat": "P99 {{name}}" - } - ], - "title": "Seconds for Items Stay in Queue (before being requested) P99", - "type": "timeseries" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": null, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 56 - }, - "id": 8, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(rate(workqueue_adds_total{job=\"$job\", namespace=\"$namespace\"}[2m])) by (instance, name)", - "legendFormat": "{{name}} {{instance}}" - } - ], - "title": "Work Queue Add Rate", - "type": "timeseries" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": null, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 64 - }, - "id": 9, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "rate(workqueue_unfinished_work_seconds{job=\"$job\", namespace=\"$namespace\"}[5m])", - "legendFormat": "{{name}} {{instance}}" - } - ], - "title": "Unfinished Seconds", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": null, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 72 - }, - "id": 10, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "histogram_quantile(0.50, sum(rate(workqueue_work_duration_seconds_bucket{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, name, le))", - "legendFormat": "P50 {{name}}" - } - ], - "title": "Seconds Processing Items from WorkQueue - 50th Percentile", - "type": "timeseries" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": null, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 80 - }, - "id": 11, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "histogram_quantile(0.90, sum(rate(workqueue_work_duration_seconds_bucket{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, name, le))", - "legendFormat": "P90 {{name}}" - } - ], - "title": "Seconds Processing Items from WorkQueue - 90th Percentile", - "type": "timeseries" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": null, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 88 - }, - "id": 12, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "histogram_quantile(0.99, sum(rate(workqueue_work_duration_seconds_bucket{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, name, le))", - "legendFormat": "P99 {{name}}" - } - ], - "title": "Seconds Processing Items from WorkQueue - 99th Percentile", - "type": "timeseries" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": null, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 96 - }, - "id": 13, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(rate(workqueue_retries_total{job=\"$job\", namespace=\"$namespace\"}[5m])) by (instance, name)", - "legendFormat": "{{name}} {{instance}}" - } - ], - "title": "Work Queue Retries Rate", - "type": "timeseries" - } - ], - "schemaVersion": 39, - "templating": { - "list": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "name": "namespace", - "query": "label_values(controller_runtime_reconcile_total, namespace)", - "refresh": 2, - "type": "query" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "name": "job", - "query": "label_values(controller_runtime_reconcile_total{namespace=~\"$namespace\"}, job)", - "refresh": 2, - "type": "query" - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timezone": "utc", - "title": "Fleet / Controller-Runtime", - "uid": "fleet-controller-runtime" -} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/gitrepo.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/gitrepo.json deleted file mode 100644 index 1a50c29..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/fleet/gitrepo.json +++ /dev/null @@ -1,325 +0,0 @@ -{ - "description": "GitRepo", - "graphTooltip": 1, - "panels": [ - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": "percentunit" - } - }, - "gridPos": { - "h": 5, - "w": 7, - "x": 0, - "y": 0 - }, - "id": 1, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_ready_clusters{exported_namespace=\"$namespace\",name=~\"$name\"}) / sum(fleet_gitrepo_desired_ready_clusters{exported_namespace=\"$namespace\",name=~\"$name\"})" - } - ], - "title": "Ready Clusters", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 5, - "w": 17, - "x": 7, - "y": 0 - }, - "id": 2, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_desired_ready_clusters{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Desired Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_ready_clusters{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Ready" - } - ], - "title": "Clusters", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 8 - }, - "id": 3, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_desired_ready_clusters{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Desired Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_ready_clusters{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Ready" - } - ], - "title": "Clusters", - "type": "timeseries" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": "percentunit" - } - }, - "gridPos": { - "h": 5, - "w": 7, - "x": 0, - "y": 13 - }, - "id": 4, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_resources_ready{exported_namespace=\"$namespace\",name=~\"$name\"}) / sum(fleet_gitrepo_resources_desired_ready{exported_namespace=\"$namespace\",name=~\"$name\"})" - } - ], - "title": "Ready Resources", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 5, - "w": 17, - "x": 7, - "y": 13 - }, - "id": 5, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_resources_desired_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Desired Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_resources_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_resources_not_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Not Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_resources_missing{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Missing" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_resources_modified{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Modified" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_resources_unknown{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Unknown" - } - ], - "title": "Resources", - "type": "stat" - }, - { - "datasource": { - "type": "datasource", - "uid": "-- Mixed --" - }, - "fieldConfig": { - "defaults": { - "decimals": 0, - "unit": null - } - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 21 - }, - "id": 6, - "pluginVersion": "v11.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_resources_desired_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Desired Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_resources_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_resources_not_ready{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Not Ready" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_resources_missing{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Missing" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_resources_modified{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Modified" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "sum(fleet_gitrepo_resources_unknown{exported_namespace=\"$namespace\",name=~\"$name\"})", - "legendFormat": "Unknown" - } - ], - "title": "Resources", - "type": "timeseries" - } - ], - "schemaVersion": 39, - "templating": { - "list": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "name": "namespace", - "query": "label_values(fleet_gitrepo_desired_ready_clusters, exported_namespace)", - "refresh": 2, - "type": "query" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "includeAll": true, - "name": "name", - "query": "label_values(fleet_gitrepo_desired_ready_clusters{exported_namespace=~\"$namespace\"}, name)", - "refresh": 2, - "type": "query" - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timezone": "utc", - "title": "Fleet / GitRepo", - "uid": "fleet-gitrepo" -} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/home/rancher-default-home.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/home/rancher-default-home.json deleted file mode 100644 index 3fce207..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/home/rancher-default-home.json +++ /dev/null @@ -1,1290 +0,0 @@ -{ - "annotations": { - "list": [] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "id": null, - "links": [], - "panels": [ - { - "datasource": "$datasource", - "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{}) OR sum(kube_node_status_allocatable{resource=\"cpu\",unit=\"core\"})", - "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{}) OR sum(kube_node_status_allocatable{resource=\"memory\", unit=\"byte\"})", - "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": "$datasource", - "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": "$datasource", - "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": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - } - ] - }, - "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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/k8s/rancher-etcd-nodes.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/k8s/rancher-etcd-nodes.json deleted file mode 100644 index 8af4b81..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/k8s/rancher-etcd-nodes.json +++ /dev/null @@ -1,687 +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": "$datasource", - "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_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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "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 - } - } - ], - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "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" - ] - }, - "timezone": "", - "title": "Rancher / etcd (Nodes)", - "uid": "rancher-etcd-nodes-1", - "version": 5 -} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/k8s/rancher-etcd.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/k8s/rancher-etcd.json deleted file mode 100644 index 0c058ca..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/k8s/rancher-etcd.json +++ /dev/null @@ -1,669 +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": "$datasource", - "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_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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "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 - } - } - ], - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "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" - ] - }, - "timezone": "", - "title": "Rancher / etcd", - "uid": "rancher-etcd-1", - "version": 4 -} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/k8s/rancher-k8s-components-nodes.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/k8s/rancher-k8s-components-nodes.json deleted file mode 100644 index b31358e..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/k8s/rancher-k8s-components-nodes.json +++ /dev/null @@ -1,527 +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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "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" - ] - }, - "timezone": "", - "title": "Rancher / Kubernetes Components (Nodes)", - "uid": "rancher-k8s-components-nodes-1", - "version": 5 -} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/k8s/rancher-k8s-components.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/k8s/rancher-k8s-components.json deleted file mode 100644 index 44cf97f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/k8s/rancher-k8s-components.json +++ /dev/null @@ -1,519 +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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "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" - ] - }, - "timezone": "", - "title": "Rancher / Kubernetes Components", - "uid": "rancher-k8s-components-1", - "version": 5 -} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/nodes/rancher-node-detail.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/nodes/rancher-node-detail.json deleted file mode 100644 index 920fb94..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/nodes/rancher-node-detail.json +++ /dev/null @@ -1,805 +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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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_total{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_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_total{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_total{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": "$datasource", - "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_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": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/nodes/rancher-node.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/nodes/rancher-node.json deleted file mode 100644 index 367df3c..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/nodes/rancher-node.json +++ /dev/null @@ -1,792 +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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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_total{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_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_total{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_total{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": "$datasource", - "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_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": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/performance/performance-debugging.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/performance/performance-debugging.json deleted file mode 100644 index 454bc39..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/performance/performance-debugging.json +++ /dev/null @@ -1,1652 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": { - "type": "datasource", - "uid": "grafana" - }, - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "target": { - "limit": 100, - "matchAny": false, - "tags": [], - "type": "dashboard" - }, - "type": "dashboard" - } - ] - }, - "editable": true, - "fiscalYearStartMonth": 0, - "graphTooltip": 0, - "links": [], - "liveNow": false, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "uid": "$datasource" - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 16, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 22, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": true, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "exemplar": true, - "expr": "topk(20,sum by (handler_name) (rate(lasso_controller_reconcile_time_seconds_sum[5m]))\n/\nsum by (handler_name) (rate(lasso_controller_reconcile_time_seconds_count[5m])))", - "interval": "", - "legendFormat": "{{handler_name}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "Handler Average Execution Times Over Last 5 Minutes (Top 20)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:1390", - "format": "short", - "label": "Execution Time in Seconds", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:1391", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "uid": "$datasource" - }, - "description": "", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 16, - "x": 0, - "y": 8 - }, - "hiddenSeries": false, - "id": 28, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "exemplar": true, - "expr": "topk(20,sum by (resource, method, code) (rate(steve_api_request_time_sum{resource!=\"subscribe\"}[5m]))\n/\nsum by (resource, method, code) (rate(steve_api_request_time_count{resource!=\"subscribe\"}[5m])))", - "interval": "", - "legendFormat": "{{resource}} {{method}} {{code}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "Rancher API Average Request Times Over Last 5 Minutes (Top 20) (Subscribes Omitted)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:178", - "format": "ms", - "label": "", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:179", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "uid": "$datasource" - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 16, - "x": 0, - "y": 16 - }, - "hiddenSeries": false, - "id": 30, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "exemplar": true, - "expr": "rate(steve_api_request_time_sum{resource=\"subscribe\"}[5m])\n/\nrate(steve_api_request_time_count{resource=\"subscribe\"}[5m])", - "interval": "", - "legendFormat": "{{resource}} {{method}} {{code}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "Subscribe Average Request Times Over Last 5 Minutes", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:368", - "format": "ms", - "label": "", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:369", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "uid": "$datasource" - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 16, - "x": 0, - "y": 24 - }, - "hiddenSeries": false, - "id": 14, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "exemplar": true, - "expr": "topk(20,workqueue_depth)", - "interval": "", - "legendFormat": "{{name}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "Lasso Controller Work Queue Depth (Top 20)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:1553", - "format": "short", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:1554", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "uid": "$datasource" - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 13, - "w": 16, - "x": 0, - "y": 32 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": false, - "hideZero": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "exemplar": true, - "expr": "topk(20,sum by (id, resource, method, code) (steve_api_total_requests))", - "instant": false, - "interval": "", - "legendFormat": "{{id}} {{resource}} {{method}} {{code}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "Number of Rancher Requests (Top 20)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:290", - "format": "short", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:291", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "uid": "$datasource" - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 16, - "x": 0, - "y": 45 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "exemplar": true, - "expr": "topk(20,sum by (id, resource, method) (steve_api_total_requests{code!=\"200\",code!=\"201\"}))", - "interval": "", - "legendFormat": "{{id}} {{resource}} {{method}} {{code}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "Number of Failed Rancher API Requests (Top 20)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:428", - "format": "short", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:429", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "uid": "$datasource" - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 16, - "x": 0, - "y": 54 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "exemplar": true, - "expr": "topk(20,sum by (resource, method, code) (rate(k8s_proxy_store_request_time_sum[5m]))\n/\nsum by (resource, method, code) (rate(k8s_proxy_store_request_time_count[5m])))", - "interval": "", - "legendFormat": "{{resource}} {{method}} {{code}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "K8s Proxy Store Average Request Times Over Last 5 Minutes (Top 20)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:662", - "format": "ms", - "label": "", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:663", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "uid": "$datasource" - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 16, - "x": 0, - "y": 62 - }, - "hiddenSeries": false, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": true, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "exemplar": true, - "expr": "topk(20,sum by (resource, method, code) (rate(k8s_proxy_client_request_time_sum[5m]))\n/\nsum by (resource, method, code) (rate(k8s_proxy_client_request_time_count[5m])))", - "interval": "", - "legendFormat": "{{resource}} {{method}} {{code}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "K8s Proxy Client Average Request Times Over Last 5 Minutes (Top 20)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:1710", - "format": "ms", - "label": "", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:1711", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "uid": "$datasource" - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 16, - "x": 0, - "y": 70 - }, - "hiddenSeries": false, - "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "exemplar": true, - "expr": "topk(20,lasso_controller_total_cached_object)", - "interval": "", - "legendFormat": "{{kind}} {{version}} {{group}} {{pod}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "Cached Objects by GroupVersionKind (Top 20)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:744", - "format": "short", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:745", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "uid": "$datasource" - }, - "description": "", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 16, - "x": 0, - "y": 78 - }, - "hiddenSeries": false, - "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "exemplar": true, - "expr": "topk(20,sum by (handler_name) (\nlasso_controller_total_handler_execution\n))", - "interval": "", - "legendFormat": "{{handler_name}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "Lasso Handler Executions (Top 20)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:824", - "format": "short", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:825", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "uid": "$datasource" - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 16, - "x": 0, - "y": 86 - }, - "hiddenSeries": false, - "id": 32, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "exemplar": true, - "expr": "topk(20, sum by (handler_name,controller_name) (\nincrease(lasso_controller_total_handler_execution[2m])\n))", - "interval": "", - "legendFormat": "{{controller_name}}.{{handler_name}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "Handler Executions Over Last 2 Minutes (Top 20)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "uid": "$datasource" - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 16, - "x": 0, - "y": 94 - }, - "hiddenSeries": false, - "id": 20, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "exemplar": true, - "expr": "topk(20,sum by (handler_name) (\nlasso_controller_total_handler_execution{has_error=\"true\"}\n))", - "interval": "", - "legendFormat": "{{handler_name}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "Total Handler Executions with Error (Top 20)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:1230", - "format": "short", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:1231", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "uid": "$datasource" - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 16, - "x": 0, - "y": 102 - }, - "hiddenSeries": false, - "id": 34, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "exemplar": true, - "expr": "topk(20,sum by (handler_name,controller_name) (\nincrease(lasso_controller_total_handler_execution{has_error=\"true\"}[2m])\n))", - "interval": "", - "legendFormat": "{{controller_name}}.{{handler_name}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "Handler Executions Over Last 2 Minutes (Top 20)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "uid": "$datasource" - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 16, - "x": 0, - "y": 110 - }, - "hiddenSeries": false, - "id": 16, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "exemplar": true, - "expr": "topk(20,session_server_total_transmit_bytes)", - "interval": "", - "legendFormat": "{{clientkey}} {{pod}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "Data Transmitted by Remote Dialer Sessions (Top 20)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:1953", - "format": "decbytes", - "label": "", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:1954", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "uid": "$datasource" - }, - "description": "", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 16, - "x": 0, - "y": 118 - }, - "hiddenSeries": false, - "id": 18, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "exemplar": true, - "expr": "session_server_total_transmit_error_bytes", - "interval": "", - "legendFormat": "{{clientkey}} {{pod}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "Errors for Remote Dialer Sessions (Top 20)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:2045", - "format": "ms", - "label": "Error Data", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:2046", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "type": "prometheus", - "uid": "$datasource" - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 16, - "x": 0, - "y": 126 - }, - "hiddenSeries": false, - "id": 26, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "editorMode": "code", - "exemplar": true, - "expr": "session_server_total_add_websocket_session - (session_server_total_remove_websocket_session or (0 * session_server_total_add_websocket_session))", - "interval": "", - "legendFormat": "{{clientkey}} {{pod}}", - "range": true, - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "Remote Dialer Active Connections (Top 20)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:2199", - "format": "short", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:2200", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "type": "prometheus", - "uid": "$datasource" - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 16, - "x": 0, - "y": 134 - }, - "hiddenSeries": false, - "id": 35, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "editorMode": "code", - "exemplar": true, - "expr": "rate(session_server_total_remove_connections[$__rate_interval])", - "interval": "", - "legendFormat": "{{clientkey}} {{pod}}", - "range": true, - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "Remote Dialer Removed Connections Rate (Top 20)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:2199", - "format": "short", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:2200", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "type": "prometheus", - "uid": "$datasource" - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 16, - "x": 0, - "y": 142 - }, - "hiddenSeries": false, - "id": 24, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "$datasource" - }, - "editorMode": "code", - "exemplar": true, - "expr": "rate(session_server_total_add_connections[$__rate_interval])", - "interval": "", - "legendFormat": "{{clientkey}} {{pod}}", - "range": true, - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "Remote Dialer Added Connections Rate (Top 20)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:2117", - "format": "short", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:2118", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - } - ], - "schemaVersion": 37, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "includeAll": false, - "label": "Data Source", - "multi": false, - "name": "datasource", - "options": [], - "query": "prometheus", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - } - ] - }, - "time": { - "from": "now-15m", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "Rancher Performance Debugging", - "uid": "tfrfU0a7k", - "version": 1, - "weekStart": "" -} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/pods/rancher-pod-containers.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/pods/rancher-pod-containers.json deleted file mode 100644 index cf78a22..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/pods/rancher-pod-containers.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": { - "{{container}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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(irate(container_network_receive_packets_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) by (container) OR sum(irate(windows_container_network_receive_packets_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Receive Total ({{container}})", - "refId": "A" - }, - { - "expr": "sum(irate(container_network_transmit_packets_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) by (container) OR sum(irate(windows_container_network_transmit_packets_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Transmit Total ({{container}})", - "refId": "B" - }, - { - "expr": "sum(irate(container_network_receive_packets_dropped_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) by (container) OR sum(irate(windows_container_network_receive_packets_dropped_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Receive Dropped ({{container}})", - "refId": "C" - }, - { - "expr": "sum(irate(container_network_receive_errors_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Receive Errors ({{container}})", - "refId": "D" - }, - { - "expr": "sum(irate(container_network_transmit_errors_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Transmit Errors ({{container}})", - "refId": "E" - }, - { - "expr": "sum(irate(container_network_transmit_packets_dropped_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) by (container) OR sum(irate(windows_container_network_transmit_packets_dropped_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__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": "$datasource", - "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(irate(container_network_receive_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) by (container) OR sum(irate(windows_container_network_receive_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Receive Total ({{container}})", - "refId": "A" - }, - { - "expr": "sum(irate(container_network_transmit_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) by (container) OR sum(irate(windows_container_network_transmit_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__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": "$datasource", - "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": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "namespace", - "query": "label_values(kube_pod_info{}, 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(kube_pod_info{namespace=\"$namespace\"}, 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/pods/rancher-pod.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/pods/rancher-pod.json deleted file mode 100644 index 4859ecc..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/pods/rancher-pod.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": { - "": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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(irate(container_network_receive_packets_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) OR sum(irate(windows_container_network_receive_packets_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Receive Total", - "refId": "A" - }, - { - "expr": "sum(irate(container_network_transmit_packets_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) OR sum(irate(windows_container_network_transmit_packets_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Transmit Total", - "refId": "B" - }, - { - "expr": "sum(irate(container_network_receive_packets_dropped_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) OR sum(irate(windows_container_network_receive_packets_dropped_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Receive Dropped", - "refId": "C" - }, - { - "expr": "sum(irate(container_network_receive_errors_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Receive Errors", - "refId": "D" - }, - { - "expr": "sum(irate(container_network_transmit_errors_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Transmit Errors", - "refId": "E" - }, - { - "expr": "sum(irate(container_network_transmit_packets_dropped_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) OR sum(irate(windows_container_network_transmit_packets_dropped_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__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": "$datasource", - "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(irate(container_network_receive_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) OR sum(irate(windows_container_network_receive_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Receive Total", - "refId": "A" - }, - { - "expr": "sum(irate(container_network_transmit_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__rate_interval])) OR sum(irate(windows_container_network_transmit_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\"}[$__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": "$datasource", - "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": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "namespace", - "query": "label_values(kube_pod_info{}, 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(kube_pod_info{namespace=\"$namespace\"}, 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/workloads/rancher-workload-pods.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/workloads/rancher-workload-pods.json deleted file mode 100644 index 92c0d24..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/workloads/rancher-workload-pods.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": 28, - "iteration": 1618265214337, - "links": [], - "panels": [ - { - "aliasColors": { - "{{pod}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "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\",container=\"\"}[$__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\",container=\"\"}[$__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\",container=\"\"}[$__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\",container=\"\"}[$__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": "$datasource", - "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\",container=\"\"} 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": "$datasource", - "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(irate(container_network_receive_packets_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(irate(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(irate(container_network_transmit_packets_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(irate(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(irate(container_network_receive_packets_dropped_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(irate(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(irate(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(irate(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(irate(container_network_transmit_packets_dropped_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(irate(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": "$datasource", - "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(irate(container_network_receive_bytes_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(irate(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(irate(container_network_transmit_bytes_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(irate(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": "$datasource", - "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": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/workloads/rancher-workload.json b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/workloads/rancher-workload.json deleted file mode 100644 index 9f5317c..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/rancher/workloads/rancher-workload.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": 28, - "iteration": 1618265214337, - "links": [], - "panels": [ - { - "aliasColors": { - "{{pod}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "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": "$datasource", - "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": "$datasource", - "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(irate(container_network_receive_packets_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(irate(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(irate(container_network_transmit_packets_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(irate(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(irate(container_network_receive_packets_dropped_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(irate(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(irate(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(irate(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(irate(container_network_transmit_packets_dropped_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(irate(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": "$datasource", - "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(irate(container_network_receive_bytes_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(irate(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(irate(container_network_transmit_bytes_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(irate(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": "$datasource", - "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": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/upgrade/scripts/delete-workloads-with-old-labels.sh b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/upgrade/scripts/delete-workloads-with-old-labels.sh deleted file mode 100644 index 89431e7..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/files/upgrade/scripts/delete-workloads-with-old-labels.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -set -e -set -x - -# node-exporter -kubectl delete daemonset -l app=prometheus-node-exporter,release=rancher-monitoring --ignore-not-found=true - -# prometheus-adapter -kubectl delete deployments -l app=prometheus-adapter,release=rancher-monitoring --ignore-not-found=true - -# kube-state-metrics -kubectl delete deployments -l app.kubernetes.io/instance=rancher-monitoring,app.kubernetes.io/name=kube-state-metrics --cascade=orphan --ignore-not-found=true -kubectl delete statefulsets -l app.kubernetes.io/instance=rancher-monitoring,app.kubernetes.io/name=kube-state-metrics --cascade=orphan --ignore-not-found=true diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/NOTES.txt b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/NOTES.txt deleted file mode 100644 index 371f3ae..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/_helpers.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/_helpers.tpl deleted file mode 100644 index d2207dd..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/_helpers.tpl +++ /dev/null @@ -1,459 +0,0 @@ -# Rancher -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -{{- define "monitoring_registry" -}} - {{- $temp_registry := (include "system_default_registry" .) -}} - {{- if $temp_registry -}} - {{- trimSuffix "/" $temp_registry -}} - {{- else -}} - {{- .Values.global.imageRegistry -}} - {{- 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.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 }} - -{{- define "rancher.serviceMonitor.selector" -}} -{{- if .Values.rancherMonitoring.selector }} -{{ .Values.rancherMonitoring.selector | toYaml }} -{{- else }} -{{- $rancherDeployment := (lookup "apps/v1" "Deployment" "cattle-system" "rancher") }} -{{- if $rancherDeployment }} -matchLabels: - app: rancher - chart: {{ index $rancherDeployment.metadata.labels "chart" }} - release: rancher -{{- end }} -{{- 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 */}} -{{/* Adding 9 to 26 truncation of kube-prometheus-stack.fullname */}} -{{- define "kube-prometheus-stack.operator.fullname" -}} -{{- if .Values.prometheusOperator.fullnameOverride -}} -{{- .Values.prometheusOperator.fullnameOverride | trunc 35 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-operator" (include "kube-prometheus-stack.fullname" .) -}} -{{- end }} -{{- end }} - -{{/* Prometheus custom resource instance name */}} -{{- define "kube-prometheus-stack.prometheus.crname" -}} -{{- if .Values.cleanPrometheusOperatorObjectNames }} -{{- include "kube-prometheus-stack.fullname" . }} -{{- else }} -{{- print (include "kube-prometheus-stack.fullname" .) "-prometheus" }} -{{- end }} -{{- end }} - -{{/* Prometheus apiVersion for networkpolicy */}} -{{- define "kube-prometheus-stack.prometheus.networkPolicy.apiVersion" -}} -{{- print "networking.k8s.io/v1" -}} -{{- end }} - -{{/* Alertmanager custom resource instance name */}} -{{- define "kube-prometheus-stack.alertmanager.crname" -}} -{{- if .Values.cleanPrometheusOperatorObjectNames }} -{{- include "kube-prometheus-stack.fullname" . }} -{{- else }} -{{- print (include "kube-prometheus-stack.fullname" .) "-alertmanager" -}} -{{- end }} -{{- end }} - -{{/* Fullname suffixed with thanos-ruler */}} -{{- define "kube-prometheus-stack.thanosRuler.fullname" -}} -{{- printf "%s-thanos-ruler" (include "kube-prometheus-stack.fullname" .) -}} -{{- end }} - -{{/* Shortened name suffixed with thanos-ruler */}} -{{- define "kube-prometheus-stack.thanosRuler.name" -}} -{{- default (printf "%s-thanos-ruler" (include "kube-prometheus-stack.name" .)) .Values.thanosRuler.name -}} -{{- 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" }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/instance: {{ .Release.Name }} -app.kubernetes.io/version: "{{ replace "+" "_" .Chart.Version }}" -app.kubernetes.io/part-of: {{ template "kube-prometheus-stack.name" . }} -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 kube-prometheus-stack service account to use */}} -{{- define "kube-prometheus-stack.operator.admissionWebhooks.serviceAccountName" -}} -{{- if .Values.prometheusOperator.serviceAccount.create -}} - {{ default (printf "%s-webhook" (include "kube-prometheus-stack.operator.fullname" .)) .Values.prometheusOperator.admissionWebhooks.deployment.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.prometheusOperator.admissionWebhooks.deployment.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 (print (include "kube-prometheus-stack.fullname" .) "-prometheus") .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 (print (include "kube-prometheus-stack.fullname" .) "-alertmanager") .Values.alertmanager.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.alertmanager.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{/* Create the name of thanosRuler service account to use */}} -{{- define "kube-prometheus-stack.thanosRuler.serviceAccountName" -}} -{{- if .Values.thanosRuler.serviceAccount.create -}} - {{ default (include "kube-prometheus-stack.thanosRuler.name" .) .Values.thanosRuler.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.thanosRuler.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 -}} - -{{/* -Use the grafana namespace override for multi-namespace deployments in combined charts -*/}} -{{- define "kube-prometheus-stack-grafana.namespace" -}} - {{- if .Values.grafana.namespaceOverride -}} - {{- .Values.grafana.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{/* -Allow kube-state-metrics job name to be overridden -*/}} -{{- define "kube-prometheus-stack-kube-state-metrics.name" -}} - {{- if index .Values "kube-state-metrics" "nameOverride" -}} - {{- index .Values "kube-state-metrics" "nameOverride" -}} - {{- else -}} - {{- print "kube-state-metrics" -}} - {{- end -}} -{{- end -}} - -{{/* -Use the kube-state-metrics namespace override for multi-namespace deployments in combined charts -*/}} -{{- define "kube-prometheus-stack-kube-state-metrics.namespace" -}} - {{- if index .Values "kube-state-metrics" "namespaceOverride" -}} - {{- index .Values "kube-state-metrics" "namespaceOverride" -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{/* -Use the prometheus-node-exporter namespace override for multi-namespace deployments in combined charts -*/}} -{{- define "kube-prometheus-stack-prometheus-node-exporter.namespace" -}} - {{- if index .Values "prometheus-node-exporter" "namespaceOverride" -}} - {{- index .Values "prometheus-node-exporter" "namespaceOverride" -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{/* Allow KubeVersion to be overridden. */}} -{{- define "kube-prometheus-stack.kubeVersion" -}} - {{- default .Capabilities.KubeVersion.Version .Values.kubeVersionOverride -}} -{{- end -}} - -{{/* Get Ingress API Version */}} -{{- define "kube-prometheus-stack.ingress.apiVersion" -}} - {{- if and (.Capabilities.APIVersions.Has "networking.k8s.io/v1") (semverCompare ">= 1.19-0" (include "kube-prometheus-stack.kubeVersion" .)) -}} - {{- print "networking.k8s.io/v1" -}} - {{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" -}} - {{- print "networking.k8s.io/v1beta1" -}} - {{- else -}} - {{- print "extensions/v1beta1" -}} - {{- end -}} -{{- end -}} - -{{/* Check Ingress stability */}} -{{- define "kube-prometheus-stack.ingress.isStable" -}} - {{- eq (include "kube-prometheus-stack.ingress.apiVersion" .) "networking.k8s.io/v1" -}} -{{- end -}} - -{{/* Check Ingress supports pathType */}} -{{/* pathType was added to networking.k8s.io/v1beta1 in Kubernetes 1.18 */}} -{{- define "kube-prometheus-stack.ingress.supportsPathType" -}} - {{- or (eq (include "kube-prometheus-stack.ingress.isStable" .) "true") (and (eq (include "kube-prometheus-stack.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" (include "kube-prometheus-stack.kubeVersion" .))) -}} -{{- end -}} - -{{/* Get Policy API Version */}} -{{- define "kube-prometheus-stack.pdb.apiVersion" -}} - {{- if and (.Capabilities.APIVersions.Has "policy/v1") (semverCompare ">= 1.21-0" (include "kube-prometheus-stack.kubeVersion" .)) -}} - {{- print "policy/v1" -}} - {{- else -}} - {{- print "policy/v1beta1" -}} - {{- end -}} - {{- end -}} - -{{/* Get value based on current Kubernetes version */}} -{{- define "kube-prometheus-stack.kubeVersionDefaultValue" -}} - {{- $values := index . 0 -}} - {{- $kubeVersion := index . 1 -}} - {{- $old := index . 2 -}} - {{- $new := index . 3 -}} - {{- $default := index . 4 -}} - {{- if kindIs "invalid" $default -}} - {{- if semverCompare $kubeVersion (include "kube-prometheus-stack.kubeVersion" $values) -}} - {{- print $new -}} - {{- else -}} - {{- print $old -}} - {{- end -}} - {{- else -}} - {{- print $default }} - {{- end -}} -{{- end -}} - -{{/* Get value for kube-controller-manager depending on insecure scraping availability */}} -{{- define "kube-prometheus-stack.kubeControllerManager.insecureScrape" -}} - {{- $values := index . 0 -}} - {{- $insecure := index . 1 -}} - {{- $secure := index . 2 -}} - {{- $userValue := index . 3 -}} - {{- include "kube-prometheus-stack.kubeVersionDefaultValue" (list $values ">= 1.22-0" $insecure $secure $userValue) -}} -{{- end -}} - -{{/* Get value for kube-scheduler depending on insecure scraping availability */}} -{{- define "kube-prometheus-stack.kubeScheduler.insecureScrape" -}} - {{- $values := index . 0 -}} - {{- $insecure := index . 1 -}} - {{- $secure := index . 2 -}} - {{- $userValue := index . 3 -}} - {{- include "kube-prometheus-stack.kubeVersionDefaultValue" (list $values ">= 1.23-0" $insecure $secure $userValue) -}} -{{- end -}} - -{{/* Sets default scrape limits for servicemonitor */}} -{{- define "servicemonitor.scrapeLimits" -}} -{{- with .sampleLimit }} -sampleLimit: {{ . }} -{{- end }} -{{- with .targetLimit }} -targetLimit: {{ . }} -{{- end }} -{{- with .labelLimit }} -labelLimit: {{ . }} -{{- end }} -{{- with .labelNameLengthLimit }} -labelNameLengthLimit: {{ . }} -{{- end }} -{{- with .labelValueLengthLimit }} -labelValueLengthLimit: {{ . }} -{{- end }} -{{- end -}} - -{{/* -To help compatibility with other charts which use global.imagePullSecrets. -Allow either an array of {name: pullSecret} maps (k8s-style), or an array of strings (more common helm-style). -global: - imagePullSecrets: - - name: pullSecret1 - - name: pullSecret2 - -or - -global: - imagePullSecrets: - - pullSecret1 - - pullSecret2 -*/}} -{{- define "kube-prometheus-stack.imagePullSecrets" -}} -{{- range .Values.global.imagePullSecrets }} - {{- if eq (typeOf .) "map[string]interface {}" }} -- {{ toYaml . | trim }} - {{- else }} -- name: {{ . }} - {{- end }} -{{- end }} -{{- end -}} - -{{- define "kube-prometheus-stack.operator.admission-webhook.dnsNames" }} -{{- $fullname := include "kube-prometheus-stack.operator.fullname" . }} -{{- $namespace := include "kube-prometheus-stack.namespace" . }} -{{- $fullname }} -{{ $fullname }}.{{ $namespace }}.svc -{{- if .Values.prometheusOperator.admissionWebhooks.deployment.enabled }} -{{ $fullname }}-webhook -{{ $fullname }}-webhook.{{ $namespace }}.svc -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/alertmanager.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/alertmanager.yaml deleted file mode 100644 index 1904405..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/alertmanager.yaml +++ /dev/null @@ -1,191 +0,0 @@ -{{- if .Values.alertmanager.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: Alertmanager -metadata: - name: {{ template "kube-prometheus-stack.alertmanager.crname" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.alertmanager.annotations }} - annotations: -{{ toYaml .Values.alertmanager.annotations | indent 4 }} -{{- end }} -spec: -{{- if .Values.alertmanager.alertmanagerSpec.image }} - {{- $registry := include "monitoring_registry" . | default .Values.alertmanager.alertmanagerSpec.image.registry }} - {{- if and .Values.alertmanager.alertmanagerSpec.image.tag .Values.alertmanager.alertmanagerSpec.image.sha }} - image: "{{ $registry }}/{{ .Values.alertmanager.alertmanagerSpec.image.repository }}:{{ .Values.alertmanager.alertmanagerSpec.image.tag }}@sha256:{{ .Values.alertmanager.alertmanagerSpec.image.sha }}" - {{- else if .Values.alertmanager.alertmanagerSpec.image.sha }} - image: "{{ $registry }}/{{ .Values.alertmanager.alertmanagerSpec.image.repository }}@sha256:{{ .Values.alertmanager.alertmanagerSpec.image.sha }}" - {{- else if .Values.alertmanager.alertmanagerSpec.image.tag }} - image: "{{ $registry }}/{{ .Values.alertmanager.alertmanagerSpec.image.repository }}:{{ .Values.alertmanager.alertmanagerSpec.image.tag }}" - {{- else }} - image: "{{ $registry }}/{{ .Values.alertmanager.alertmanagerSpec.image.repository }}" - {{- end }} - 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" . }} - automountServiceAccountToken: {{ .Values.alertmanager.alertmanagerSpec.automountServiceAccountToken }} -{{- 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: -{{ tpl (toYaml .Values.alertmanager.alertmanagerSpec.alertmanagerConfigSelector | indent 4) . }} -{{ else }} - alertmanagerConfigSelector: {} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.alertmanagerConfigNamespaceSelector }} - alertmanagerConfigNamespaceSelector: -{{ tpl (toYaml .Values.alertmanager.alertmanagerSpec.alertmanagerConfigNamespaceSelector | indent 4) . }} -{{ else }} - alertmanagerConfigNamespaceSelector: {} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.web }} - web: -{{ toYaml .Values.alertmanager.alertmanagerSpec.web | indent 4 }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.alertmanagerConfiguration }} - alertmanagerConfiguration: -{{ toYaml .Values.alertmanager.alertmanagerSpec.alertmanagerConfiguration | indent 4 }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.alertmanagerConfigMatcherStrategy }} - alertmanagerConfigMatcherStrategy: -{{ toYaml .Values.alertmanager.alertmanagerSpec.alertmanagerConfigMatcherStrategy | indent 4 }} -{{- 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: -{{ tpl (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: -{{- end }} -{{- 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.kubernetes.io/name, operator: In, values: [alertmanager]} - - {key: alertmanager, operator: In, values: [{{ template "kube-prometheus-stack.alertmanager.crname" . }}]} -{{- else if eq .Values.alertmanager.alertmanagerSpec.podAntiAffinity "soft" }} - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 100 - podAffinityTerm: - topologyKey: {{ .Values.alertmanager.alertmanagerSpec.podAntiAffinityTopologyKey }} - labelSelector: - matchExpressions: - - {key: app.kubernetes.io/name, operator: In, values: [alertmanager]} - - {key: alertmanager, operator: In, values: [{{ template "kube-prometheus-stack.alertmanager.crname" . }}]} -{{- 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: -{{ include "kube-prometheus-stack.imagePullSecrets" . | trim | 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.clusterGossipInterval }} - clusterGossipInterval: {{ .Values.alertmanager.alertmanagerSpec.clusterGossipInterval }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.clusterPeerTimeout }} - clusterPeerTimeout: {{ .Values.alertmanager.alertmanagerSpec.clusterPeerTimeout }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.clusterPushpullInterval }} - clusterPushpullInterval: {{ .Values.alertmanager.alertmanagerSpec.clusterPushpullInterval }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.forceEnableClusterMode }} - forceEnableClusterMode: {{ .Values.alertmanager.alertmanagerSpec.forceEnableClusterMode }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.minReadySeconds }} - minReadySeconds: {{ .Values.alertmanager.alertmanagerSpec.minReadySeconds }} -{{- end }} -{{- with .Values.alertmanager.alertmanagerSpec.additionalConfig }} - {{- tpl (toYaml .) $ | nindent 2 }} -{{- end }} -{{- with .Values.alertmanager.alertmanagerSpec.additionalConfigString }} - {{- tpl . $ | nindent 2 }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/extrasecret.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/extrasecret.yaml deleted file mode 100644 index ecd8f47..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/extrasecret.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if .Values.alertmanager.extraSecret.data -}} -{{- $secretName := printf "alertmanager-%s-extra" (include "kube-prometheus-stack.fullname" . ) -}} -apiVersion: v1 -kind: Secret -metadata: - name: {{ default $secretName .Values.alertmanager.extraSecret.name }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- if .Values.alertmanager.extraSecret.annotations }} - annotations: -{{ toYaml .Values.alertmanager.extraSecret.annotations | indent 4 }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager - app.kubernetes.io/component: alertmanager -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -data: -{{- range $key, $val := .Values.alertmanager.extraSecret.data }} - {{ $key }}: {{ $val | b64enc | quote }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/ingress.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/ingress.yaml deleted file mode 100644 index be9f5aa..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/ingress.yaml +++ /dev/null @@ -1,78 +0,0 @@ -{{- if and .Values.alertmanager.enabled .Values.alertmanager.ingress.enabled }} -{{- $pathType := .Values.alertmanager.ingress.pathType | default "ImplementationSpecific" }} -{{- $serviceName := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "alertmanager" }} -{{- $backendServiceName := .Values.alertmanager.ingress.serviceName | default (printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "alertmanager") }} -{{- $servicePort := .Values.alertmanager.ingress.servicePort | default .Values.alertmanager.service.port -}} -{{- $routePrefix := list .Values.alertmanager.alertmanagerSpec.routePrefix }} -{{- $paths := .Values.alertmanager.ingress.paths | default $routePrefix -}} -{{- $apiIsStable := eq (include "kube-prometheus-stack.ingress.isStable" .) "true" -}} -{{- $ingressSupportsPathType := eq (include "kube-prometheus-stack.ingress.supportsPathType" .) "true" -}} -apiVersion: {{ include "kube-prometheus-stack.ingress.apiVersion" . }} -kind: Ingress -metadata: - name: {{ $serviceName }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- if .Values.alertmanager.ingress.annotations }} - annotations: - {{- tpl (toYaml .Values.alertmanager.ingress.annotations) . | nindent 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 $apiIsStable }} - {{- 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 $ | quote }} - http: - paths: - {{- range $p := $paths }} - - path: {{ tpl $p $ }} - {{- if and $pathType $ingressSupportsPathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - {{- if $apiIsStable }} - service: - name: {{ $backendServiceName }} - port: - number: {{ $servicePort }} - {{- else }} - serviceName: {{ $backendServiceName }} - servicePort: {{ $servicePort }} - {{- end }} - {{- end -}} - {{- end -}} - {{- else }} - - http: - paths: - {{- range $p := $paths }} - - path: {{ tpl $p $ }} - {{- if and $pathType $ingressSupportsPathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - {{- if $apiIsStable }} - service: - name: {{ $backendServiceName }} - port: - number: {{ $servicePort }} - {{- else }} - serviceName: {{ $backendServiceName }} - servicePort: {{ $servicePort }} - {{- end }} - {{- end -}} - {{- end -}} - {{- if .Values.alertmanager.ingress.tls }} - tls: -{{ tpl (toYaml .Values.alertmanager.ingress.tls | indent 4) . }} - {{- end -}} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/ingressperreplica.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/ingressperreplica.yaml deleted file mode 100644 index b2e00a4..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/ingressperreplica.yaml +++ /dev/null @@ -1,67 +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 -}} -{{- $apiIsStable := eq (include "kube-prometheus-stack.ingress.isStable" .) "true" -}} -{{- $ingressSupportsPathType := eq (include "kube-prometheus-stack.ingress.supportsPathType" .) "true" -}} -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 - apiVersion: {{ include "kube-prometheus-stack.ingress.apiVersion" $ }} - 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: - {{- tpl (toYaml $ingressValues.annotations) $ | nindent 8 }} - {{- end }} - spec: - {{- if $apiIsStable }} - {{- 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 and $pathType $ingressSupportsPathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - {{- if $apiIsStable }} - service: - name: {{ include "kube-prometheus-stack.fullname" $ }}-alertmanager-{{ $i }} - port: - number: {{ $servicePort }} - {{- else }} - serviceName: {{ include "kube-prometheus-stack.fullname" $ }}-alertmanager-{{ $i }} - servicePort: {{ $servicePort }} - {{- end }} - {{- 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/podDisruptionBudget.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/podDisruptionBudget.yaml deleted file mode 100644 index b183403..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/podDisruptionBudget.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if and .Values.alertmanager.enabled .Values.alertmanager.podDisruptionBudget.enabled }} -apiVersion: {{ include "kube-prometheus-stack.pdb.apiVersion" . }} -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.kubernetes.io/name: alertmanager - alertmanager: {{ template "kube-prometheus-stack.alertmanager.crname" . }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/psp-role.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/psp-role.yaml deleted file mode 100644 index 8810e93..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/psp-role.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- if and .Values.alertmanager.enabled (or .Values.global.cattle.psp.enabled (and .Values.global.rbac.create .Values.global.rbac.pspEnabled)) }} -{{- if .Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy" }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/psp-rolebinding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/psp-rolebinding.yaml deleted file mode 100644 index 794f4ad..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/psp-rolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.alertmanager.enabled (or .Values.global.cattle.psp.enabled (and .Values.global.rbac.create .Values.global.rbac.pspEnabled)) }} -{{- if .Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy" }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/psp.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/psp.yaml deleted file mode 100644 index 07b616b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/psp.yaml +++ /dev/null @@ -1,47 +0,0 @@ -{{- if and .Values.alertmanager.enabled (or .Values.global.cattle.psp.enabled (and .Values.global.rbac.create .Values.global.rbac.pspEnabled)) }} -{{- if .Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy" }} -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 - # 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: - # Allow adding the root group. - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - # Allow adding the root group. - - min: 0 - max: 65535 - readOnlyRootFilesystem: false -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/secret.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/secret.yaml deleted file mode 100644 index d2fe84a..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/secret.yaml +++ /dev/null @@ -1,35 +0,0 @@ -{{- if and (.Values.alertmanager.enabled) (not .Values.alertmanager.alertmanagerSpec.useExistingSecret) }} -{{/* This file is applied when the operation is helm install and the target secret does not exist. */}} -{{- $secretName := (printf "alertmanager-%s" (include "kube-prometheus-stack.alertmanager.crname" .)) }} -{{- if or (not (lookup "v1" "Secret" (include "kube-prometheus-stack.namespace" .) $secretName)) (eq .Values.alertmanager.secret.recreateIfExists true) }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ $secretName }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - annotations: - "helm.sh/hook": pre-install, pre-upgrade - "helm.sh/hook-weight": "3" - "helm.sh/resource-policy": keep -{{- 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 }} -{{- if .Values.alertmanager.stringConfig }} - alertmanager.yaml: {{ tpl (.Values.alertmanager.stringConfig) . | b64enc | quote }} -{{- else if eq (typeOf .Values.alertmanager.config) "string" }} - alertmanager.yaml: {{ tpl (.Values.alertmanager.config) . | b64enc | quote }} -{{- else }} - alertmanager.yaml: {{ tpl (toYaml .Values.alertmanager.config) . | b64enc | quote }} -{{- end }} -{{- else }} - alertmanager.yaml: {{ toYaml .Values.alertmanager.config | b64enc | quote }} -{{- end }} -{{- range $key, $val := .Values.alertmanager.templateFiles }} - {{ $key }}: {{ $val | b64enc | quote }} -{{- end }} -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/service.yaml deleted file mode 100644 index 373de32..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/service.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- 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 }} -{{- if ne .Values.alertmanager.service.type "ClusterIP" }} - externalTrafficPolicy: {{ .Values.alertmanager.service.externalTrafficPolicy }} -{{- 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 - - name: reloader-web - {{- if semverCompare ">=1.20.0-0" $kubeTargetVersion }} - appProtocol: http - {{- end }} - port: 8080 - targetPort: reloader-web -{{- if .Values.alertmanager.service.additionalPorts }} -{{ toYaml .Values.alertmanager.service.additionalPorts | indent 2 }} -{{- end }} - selector: - app.kubernetes.io/name: alertmanager - alertmanager: {{ template "kube-prometheus-stack.alertmanager.crname" . }} -{{- if .Values.alertmanager.service.sessionAffinity }} - sessionAffinity: {{ .Values.alertmanager.service.sessionAffinity }} -{{- end }} -{{- if eq .Values.alertmanager.service.sessionAffinity "ClientIP" }} - sessionAffinityConfig: - clientIP: - timeoutSeconds: {{ .Values.alertmanager.service.sessionAffinityConfig.clientIP.timeoutSeconds }} -{{- end }} - type: "{{ .Values.alertmanager.service.type }}" -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/serviceaccount.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/serviceaccount.yaml deleted file mode 100644 index 745ced8..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/serviceaccount.yaml +++ /dev/null @@ -1,21 +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 - app.kubernetes.io/name: {{ template "kube-prometheus-stack.name" . }}-alertmanager - app.kubernetes.io/component: alertmanager -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.alertmanager.serviceAccount.annotations }} - annotations: -{{ toYaml .Values.alertmanager.serviceAccount.annotations | indent 4 }} -{{- end }} -automountServiceAccountToken: {{ .Values.alertmanager.serviceAccount.automountServiceAccountToken }} -{{- if .Values.global.imagePullSecrets }} -imagePullSecrets: -{{ include "kube-prometheus-stack.imagePullSecrets" . | trim | indent 2}} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/servicemonitor.yaml deleted file mode 100644 index 6233690..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/servicemonitor.yaml +++ /dev/null @@ -1,84 +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 }} -{{- with .Values.alertmanager.serviceMonitor.additionalLabels }} -{{- toYaml . | nindent 4 }} -{{- end }} -spec: - {{- include "servicemonitor.scrapeLimits" .Values.alertmanager.serviceMonitor | nindent 2 }} - 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 }} - enableHttp2: {{ .Values.alertmanager.serviceMonitor.enableHttp2 }} - {{- if .Values.alertmanager.serviceMonitor.interval }} - interval: {{ .Values.alertmanager.serviceMonitor.interval }} - {{- end }} - {{- if .Values.alertmanager.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.alertmanager.serviceMonitor.proxyUrl }} - {{- 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" - metricRelabelings: - {{- if .Values.alertmanager.serviceMonitor.metricRelabelings }} - {{- tpl (toYaml .Values.alertmanager.serviceMonitor.metricRelabelings | nindent 6) . }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName }} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} - {{- if .Values.alertmanager.serviceMonitor.relabelings }} - relabelings: {{- toYaml .Values.alertmanager.serviceMonitor.relabelings | nindent 6 }} - {{- end }} - {{- range .Values.alertmanager.serviceMonitor.additionalEndpoints }} - - port: {{ .port }} - {{- if or $.Values.alertmanager.serviceMonitor.interval .interval }} - interval: {{ default $.Values.alertmanager.serviceMonitor.interval .interval }} - {{- end }} - {{- if or $.Values.alertmanager.serviceMonitor.proxyUrl .proxyUrl }} - proxyUrl: {{ default $.Values.alertmanager.serviceMonitor.proxyUrl .proxyUrl }} - {{- end }} - {{- if or $.Values.alertmanager.serviceMonitor.scheme .scheme }} - scheme: {{ default $.Values.alertmanager.serviceMonitor.scheme .scheme }} - {{- end }} - {{- if or $.Values.alertmanager.serviceMonitor.bearerTokenFile .bearerTokenFile }} - bearerTokenFile: {{ default $.Values.alertmanager.serviceMonitor.bearerTokenFile .bearerTokenFile }} - {{- end }} - {{- if or $.Values.alertmanager.serviceMonitor.tlsConfig .tlsConfig }} - tlsConfig: {{- default $.Values.alertmanager.serviceMonitor.tlsConfig .tlsConfig | toYaml | nindent 6 }} - {{- end }} - path: {{ .path }} - {{- if or $.Values.alertmanager.serviceMonitor.metricRelabelings .metricRelabelings }} - metricRelabelings: {{- tpl (default $.Values.alertmanager.serviceMonitor.metricRelabelings .metricRelabelings | toYaml | nindent 6) . }} - {{- end }} - {{- if or $.Values.alertmanager.serviceMonitor.relabelings .relabelings }} - relabelings: {{- default $.Values.alertmanager.serviceMonitor.relabelings .relabelings | toYaml | nindent 6 }} - {{- end }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/serviceperreplica.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/serviceperreplica.yaml deleted file mode 100644 index 75a13bd..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/alertmanager/serviceperreplica.yaml +++ /dev/null @@ -1,49 +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 }} - {{- if ne $serviceValues.type "ClusterIP" }} - externalTrafficPolicy: {{ $serviceValues.externalTrafficPolicy }} - {{- end }} - ports: - - name: {{ $.Values.alertmanager.alertmanagerSpec.portName }} - {{- if eq $serviceValues.type "NodePort" }} - nodePort: {{ $serviceValues.nodePort }} - {{- end }} - port: {{ $serviceValues.port }} - targetPort: {{ $serviceValues.targetPort }} - selector: - app.kubernetes.io/name: alertmanager - alertmanager: {{ template "kube-prometheus-stack.alertmanager.crname" $ }} - statefulset.kubernetes.io/pod-name: alertmanager-{{ include "kube-prometheus-stack.alertmanager.crname" $ }}-{{ $i }} - type: "{{ $serviceValues.type }}" -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/core-dns/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/core-dns/service.yaml deleted file mode 100644 index b8618f7..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/core-dns/service.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if and .Values.coreDns.enabled .Values.coreDns.service.enabled .Values.kubernetesServiceMonitors.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: {{ .Values.coreDns.serviceMonitor.port }} - 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/core-dns/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/core-dns/servicemonitor.yaml deleted file mode 100644 index dc15a06..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/core-dns/servicemonitor.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if and .Values.coreDns.enabled .Values.coreDns.serviceMonitor.enabled .Values.kubernetesServiceMonitors.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-coredns - {{- if .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }} - namespace: kube-system - {{- else }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - {{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-coredns - {{- with .Values.coreDns.serviceMonitor.additionalLabels }} - {{- toYaml . | nindent 4 }} - {{- end }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: {{ .Values.coreDns.serviceMonitor.jobLabel }} - {{- include "servicemonitor.scrapeLimits" .Values.coreDns.serviceMonitor | nindent 2 }} - selector: - {{- if .Values.coreDns.serviceMonitor.selector }} - {{ tpl (toYaml .Values.coreDns.serviceMonitor.selector | nindent 4) . }} - {{- else }} - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-coredns - release: {{ $.Release.Name | quote }} - {{- end }} - namespaceSelector: - matchNames: - - "kube-system" - endpoints: - - port: {{ .Values.coreDns.serviceMonitor.port }} - {{- if .Values.coreDns.serviceMonitor.interval}} - interval: {{ .Values.coreDns.serviceMonitor.interval }} - {{- end }} - {{- if .Values.coreDns.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.coreDns.serviceMonitor.proxyUrl}} - {{- end }} - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - metricRelabelings: - {{- if .Values.coreDns.serviceMonitor.metricRelabelings }} - {{ tpl (toYaml .Values.coreDns.serviceMonitor.metricRelabelings | indent 4) . }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName }} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} -{{- if .Values.coreDns.serviceMonitor.relabelings }} - relabelings: -{{ tpl (toYaml .Values.coreDns.serviceMonitor.relabelings | indent 4) . }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-api-server/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-api-server/servicemonitor.yaml deleted file mode 100644 index 66e7776..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-api-server/servicemonitor.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- if and .Values.kubeApiServer.enabled .Values.kubernetesServiceMonitors.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-apiserver - {{- if .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }} - namespace: default - {{- else }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - {{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-apiserver - {{- with .Values.kubeApiServer.serviceMonitor.additionalLabels }} - {{- toYaml . | nindent 4 }} - {{- end }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - {{- include "servicemonitor.scrapeLimits" .Values.kubeApiServer.serviceMonitor | nindent 2 }} - endpoints: - - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - {{- if .Values.kubeApiServer.serviceMonitor.interval }} - interval: {{ .Values.kubeApiServer.serviceMonitor.interval }} - {{- end }} - {{- if .Values.kubeApiServer.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.kubeApiServer.serviceMonitor.proxyUrl }} - {{- end }} - port: https - scheme: https - metricRelabelings: - {{- if .Values.kubeApiServer.serviceMonitor.metricRelabelings }} -{{ tpl (toYaml .Values.kubeApiServer.serviceMonitor.metricRelabelings | indent 6) . }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName}} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} -{{- if .Values.kubeApiServer.serviceMonitor.relabelings }} - relabelings: -{{ tpl (toYaml .Values.kubeApiServer.serviceMonitor.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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-controller-manager/endpoints.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-controller-manager/endpoints.yaml deleted file mode 100644 index 6a6afa6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-controller-manager/endpoints.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if and .Values.kubeControllerManager.enabled .Values.kubeControllerManager.endpoints .Values.kubernetesServiceMonitors.enabled }} -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: {{ .Values.kubeControllerManager.serviceMonitor.port }} - {{- $kubeControllerManagerDefaultInsecurePort := 10252 }} - {{- $kubeControllerManagerDefaultSecurePort := 10257 }} - port: {{ include "kube-prometheus-stack.kubeControllerManager.insecureScrape" (list . $kubeControllerManagerDefaultInsecurePort $kubeControllerManagerDefaultSecurePort .Values.kubeControllerManager.service.port) }} - protocol: TCP -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-controller-manager/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-controller-manager/service.yaml deleted file mode 100644 index 43b1a97..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-controller-manager/service.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- if and .Values.kubeControllerManager.enabled .Values.kubeControllerManager.service.enabled .Values.kubernetesServiceMonitors.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: {{ .Values.kubeControllerManager.serviceMonitor.port }} - {{- $kubeControllerManagerDefaultInsecurePort := 10252 }} - {{- $kubeControllerManagerDefaultSecurePort := 10257 }} - port: {{ include "kube-prometheus-stack.kubeControllerManager.insecureScrape" (list . $kubeControllerManagerDefaultInsecurePort $kubeControllerManagerDefaultSecurePort .Values.kubeControllerManager.service.port) }} - protocol: TCP - targetPort: {{ include "kube-prometheus-stack.kubeControllerManager.insecureScrape" (list . $kubeControllerManagerDefaultInsecurePort $kubeControllerManagerDefaultSecurePort .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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-controller-manager/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-controller-manager/servicemonitor.yaml deleted file mode 100644 index 7ed3baa..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-controller-manager/servicemonitor.yaml +++ /dev/null @@ -1,69 +0,0 @@ -{{- if and .Values.kubeControllerManager.enabled .Values.kubeControllerManager.serviceMonitor.enabled .Values.kubernetesServiceMonitors.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-controller-manager - {{- if .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }} - namespace: kube-system - {{- else }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - {{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-controller-manager - {{- with .Values.kubeControllerManager.serviceMonitor.additionalLabels }} - {{- toYaml . | nindent 4 }} - {{- end }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: {{ .Values.kubeControllerManager.serviceMonitor.jobLabel }} - {{- include "servicemonitor.scrapeLimits" .Values.kubeControllerManager.serviceMonitor | nindent 2 }} - selector: - {{- if .Values.kubeControllerManager.serviceMonitor.selector }} - {{ tpl (toYaml .Values.kubeControllerManager.serviceMonitor.selector | nindent 4) . }} - {{- else }} - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-controller-manager - release: {{ $.Release.Name | quote }} - {{- end }} - namespaceSelector: - matchNames: - - "kube-system" - endpoints: - - port: {{ .Values.kubeControllerManager.serviceMonitor.port }} - {{- if .Values.kubeControllerManager.serviceMonitor.interval }} - interval: {{ .Values.kubeControllerManager.serviceMonitor.interval }} - {{- end }} - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - {{- if .Values.kubeControllerManager.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.kubeControllerManager.serviceMonitor.proxyUrl}} - {{- end }} - {{- if eq (include "kube-prometheus-stack.kubeControllerManager.insecureScrape" (list . false true .Values.kubeControllerManager.serviceMonitor.https )) "true" }} - scheme: https - tlsConfig: - caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - {{- if eq (include "kube-prometheus-stack.kubeControllerManager.insecureScrape" (list . nil true .Values.kubeControllerManager.serviceMonitor.insecureSkipVerify)) "true" }} - insecureSkipVerify: true - {{- end }} - {{- if .Values.kubeControllerManager.serviceMonitor.serverName }} - serverName: {{ .Values.kubeControllerManager.serviceMonitor.serverName }} - {{- end }} - {{- end }} - metricRelabelings: - {{- if.Values.kubeControllerManager.serviceMonitor.metricRelabelings }} - {{ tpl (toYaml .Values.kubeControllerManager.serviceMonitor.metricRelabelings | indent 4) . }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName}} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} -{{- if .Values.kubeControllerManager.serviceMonitor.relabelings }} - relabelings: -{{ tpl (toYaml .Values.kubeControllerManager.serviceMonitor.relabelings | indent 4) . }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-dns/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-dns/service.yaml deleted file mode 100644 index 81b2c99..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-dns/service.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- if and .Values.kubeDns.enabled .Values.kubernetesServiceMonitors.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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-dns/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-dns/servicemonitor.yaml deleted file mode 100644 index 9fa41b5..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-dns/servicemonitor.yaml +++ /dev/null @@ -1,71 +0,0 @@ -{{- if and .Values.kubeDns.enabled .Values.kubernetesServiceMonitors.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-dns - {{- if .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }} - namespace: kube-system - {{- else }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - {{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-dns - {{- with .Values.kubeDns.serviceMonitor.additionalLabels }} - {{- toYaml . | nindent 4 }} - {{- end }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: {{ .Values.kubeDns.serviceMonitor.jobLabel }} - {{- include "servicemonitor.scrapeLimits" .Values.kubeDns.serviceMonitor | nindent 2 }} - selector: - {{- if .Values.kubeDns.serviceMonitor.selector }} - {{ tpl (toYaml .Values.kubeDns.serviceMonitor.selector | nindent 4) . }} - {{- else }} - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-dns - release: {{ $.Release.Name | quote }} - {{- end }} - 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.proxyUrl }} - proxyUrl: {{ .Values.kubeDns.serviceMonitor.proxyUrl}} - {{- end }} - metricRelabelings: - {{- if .Values.kubeDns.serviceMonitor.dnsmasqMetricRelabelings }} - {{ tpl (toYaml .Values.kubeDns.serviceMonitor.dnsmasqMetricRelabelings | indent 4) . }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName}} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- 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: -{{ tpl (toYaml .Values.kubeDns.serviceMonitor.relabelings | indent 4) . }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-etcd/endpoints.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-etcd/endpoints.yaml deleted file mode 100644 index e366447..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-etcd/endpoints.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.kubeEtcd.enabled .Values.kubeEtcd.endpoints .Values.kubernetesServiceMonitors.enabled }} -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: {{ .Values.kubeEtcd.serviceMonitor.port }} - port: {{ .Values.kubeEtcd.service.port }} - protocol: TCP -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-etcd/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-etcd/service.yaml deleted file mode 100644 index d07d4f3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-etcd/service.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and .Values.kubeEtcd.enabled .Values.kubeEtcd.service.enabled .Values.kubernetesServiceMonitors.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: {{ .Values.kubeEtcd.serviceMonitor.port }} - 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-etcd/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-etcd/servicemonitor.yaml deleted file mode 100644 index 26fdbdb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-etcd/servicemonitor.yaml +++ /dev/null @@ -1,75 +0,0 @@ -{{- if and .Values.kubeEtcd.enabled .Values.kubeEtcd.serviceMonitor.enabled .Values.kubernetesServiceMonitors.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-etcd - {{- if .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }} - namespace: kube-system - {{- else }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - {{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-etcd - {{- with .Values.kubeEtcd.serviceMonitor.additionalLabels }} - {{- toYaml . | nindent 4 }} - {{- end }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: {{ .Values.kubeEtcd.serviceMonitor.jobLabel }} - {{- include "servicemonitor.scrapeLimits" .Values.kubeEtcd.serviceMonitor | nindent 4 }} - selector: - {{- if .Values.kubeEtcd.serviceMonitor.selector }} - {{ tpl (toYaml .Values.kubeEtcd.serviceMonitor.selector | nindent 4) . }} - {{- else }} - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-etcd - release: {{ $.Release.Name | quote }} - {{- end }} - namespaceSelector: - matchNames: - - "kube-system" - endpoints: - - port: {{ .Values.kubeEtcd.serviceMonitor.port }} - {{- if .Values.kubeEtcd.serviceMonitor.interval }} - interval: {{ .Values.kubeEtcd.serviceMonitor.interval }} - {{- end }} - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - {{- if .Values.kubeEtcd.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.kubeEtcd.serviceMonitor.proxyUrl}} - {{- end }} - {{- 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 }} - metricRelabelings: - {{- if .Values.kubeEtcd.serviceMonitor.metricRelabelings }} - {{ tpl (toYaml .Values.kubeEtcd.serviceMonitor.metricRelabelings | indent 4) . }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName}} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} -{{- if .Values.kubeEtcd.serviceMonitor.relabelings }} - relabelings: -{{ tpl (toYaml .Values.kubeEtcd.serviceMonitor.relabelings | indent 4) . }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-proxy/endpoints.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-proxy/endpoints.yaml deleted file mode 100644 index 8613e62..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-proxy/endpoints.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.kubeProxy.enabled .Values.kubeProxy.endpoints .Values.kubernetesServiceMonitors.enabled }} -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: {{ .Values.kubeProxy.serviceMonitor.port }} - port: {{ .Values.kubeProxy.service.port }} - protocol: TCP -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-proxy/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-proxy/service.yaml deleted file mode 100644 index 8ccb221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-proxy/service.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and .Values.kubeProxy.enabled .Values.kubeProxy.service.enabled .Values.kubernetesServiceMonitors.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: {{ .Values.kubeProxy.serviceMonitor.port }} - 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-proxy/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-proxy/servicemonitor.yaml deleted file mode 100644 index 24b0ab2..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-proxy/servicemonitor.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.kubeProxy.enabled .Values.kubeProxy.serviceMonitor.enabled .Values.kubernetesServiceMonitors.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-proxy - {{- if .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }} - namespace: kube-system - {{- else }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - {{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-proxy - {{- with .Values.kubeProxy.serviceMonitor.additionalLabels }} - {{- toYaml . | nindent 4 }} - {{- end }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: {{ .Values.kubeProxy.serviceMonitor.jobLabel }} - {{- include "servicemonitor.scrapeLimits" .Values.kubeProxy.serviceMonitor | nindent 2 }} - selector: - {{- if .Values.kubeProxy.serviceMonitor.selector }} - {{ tpl (toYaml .Values.kubeProxy.serviceMonitor.selector | nindent 4) . }} - {{- else }} - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-proxy - release: {{ $.Release.Name | quote }} - {{- end }} - namespaceSelector: - matchNames: - - "kube-system" - endpoints: - - port: {{ .Values.kubeProxy.serviceMonitor.port }} - {{- if .Values.kubeProxy.serviceMonitor.interval }} - interval: {{ .Values.kubeProxy.serviceMonitor.interval }} - {{- end }} - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - {{- if .Values.kubeProxy.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.kubeProxy.serviceMonitor.proxyUrl}} - {{- end }} - {{- if .Values.kubeProxy.serviceMonitor.https }} - scheme: https - tlsConfig: - caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - {{- end}} - metricRelabelings: - {{- if .Values.kubeProxy.serviceMonitor.metricRelabelings }} - {{ tpl (toYaml .Values.kubeProxy.serviceMonitor.metricRelabelings | indent 4) . }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName}} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} -{{- if .Values.kubeProxy.serviceMonitor.relabelings }} - relabelings: -{{ tpl (toYaml .Values.kubeProxy.serviceMonitor.relabelings | indent 4) . }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-scheduler/endpoints.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-scheduler/endpoints.yaml deleted file mode 100644 index 6236b42..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-scheduler/endpoints.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if and .Values.kubeScheduler.enabled .Values.kubeScheduler.endpoints .Values.kubernetesServiceMonitors.enabled }} -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: {{ .Values.kubeScheduler.serviceMonitor.port }} - {{- $kubeSchedulerDefaultInsecurePort := 10251 }} - {{- $kubeSchedulerDefaultSecurePort := 10259 }} - port: {{ include "kube-prometheus-stack.kubeScheduler.insecureScrape" (list . $kubeSchedulerDefaultInsecurePort $kubeSchedulerDefaultSecurePort .Values.kubeScheduler.service.port) }} - protocol: TCP -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-scheduler/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-scheduler/service.yaml deleted file mode 100644 index 90b3a80..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-scheduler/service.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- if and .Values.kubeScheduler.enabled .Values.kubeScheduler.service.enabled .Values.kubernetesServiceMonitors.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: {{ .Values.kubeScheduler.serviceMonitor.port }} - {{- $kubeSchedulerDefaultInsecurePort := 10251 }} - {{- $kubeSchedulerDefaultSecurePort := 10259 }} - port: {{ include "kube-prometheus-stack.kubeScheduler.insecureScrape" (list . $kubeSchedulerDefaultInsecurePort $kubeSchedulerDefaultSecurePort .Values.kubeScheduler.service.port) }} - protocol: TCP - targetPort: {{ include "kube-prometheus-stack.kubeScheduler.insecureScrape" (list . $kubeSchedulerDefaultInsecurePort $kubeSchedulerDefaultSecurePort .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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-scheduler/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-scheduler/servicemonitor.yaml deleted file mode 100644 index b17c4f1..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-scheduler/servicemonitor.yaml +++ /dev/null @@ -1,69 +0,0 @@ -{{- if and .Values.kubeScheduler.enabled .Values.kubeScheduler.serviceMonitor.enabled .Values.kubernetesServiceMonitors.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-scheduler - {{- if .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }} - namespace: kube-system - {{- else }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - {{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-scheduler - {{- with .Values.kubeScheduler.serviceMonitor.additionalLabels }} - {{- toYaml . | nindent 4 }} - {{- end }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: {{ .Values.kubeScheduler.serviceMonitor.jobLabel }} - {{- include "servicemonitor.scrapeLimits" .Values.kubeScheduler.serviceMonitor | nindent 2 }} - selector: - {{- if .Values.kubeScheduler.serviceMonitor.selector }} - {{ tpl (toYaml .Values.kubeScheduler.serviceMonitor.selector | nindent 4) . }} - {{- else }} - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-scheduler - release: {{ $.Release.Name | quote }} - {{- end }} - namespaceSelector: - matchNames: - - "kube-system" - endpoints: - - port: {{ .Values.kubeScheduler.serviceMonitor.port }} - {{- if .Values.kubeScheduler.serviceMonitor.interval }} - interval: {{ .Values.kubeScheduler.serviceMonitor.interval }} - {{- end }} - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - {{- if .Values.kubeScheduler.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.kubeScheduler.serviceMonitor.proxyUrl}} - {{- end }} - {{- if eq (include "kube-prometheus-stack.kubeScheduler.insecureScrape" (list . false true .Values.kubeScheduler.serviceMonitor.https )) "true" }} - scheme: https - tlsConfig: - caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - {{- if eq (include "kube-prometheus-stack.kubeScheduler.insecureScrape" (list . nil true .Values.kubeScheduler.serviceMonitor.insecureSkipVerify)) "true" }} - insecureSkipVerify: true - {{- end }} - {{- if .Values.kubeScheduler.serviceMonitor.serverName }} - serverName: {{ .Values.kubeScheduler.serviceMonitor.serverName }} - {{- end}} - {{- end}} - metricRelabelings: - {{- if .Values.kubeScheduler.serviceMonitor.metricRelabelings }} - {{ tpl (toYaml .Values.kubeScheduler.serviceMonitor.metricRelabelings | indent 4) . }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName}} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} -{{- if .Values.kubeScheduler.serviceMonitor.relabelings }} - relabelings: -{{ tpl (toYaml .Values.kubeScheduler.serviceMonitor.relabelings | indent 4) . }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-state-metrics/validate.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-state-metrics/validate.yaml deleted file mode 100644 index 9211b3d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kube-state-metrics/validate.yaml +++ /dev/null @@ -1,7 +0,0 @@ -{{- if .Values.kubeStateMetrics.enabled }} -{{- if not (kindIs "invalid" .Values.kubeStateMetrics.serviceMonitor) }} -{{- if .Values.kubeStateMetrics.serviceMonitor.namespaceOverride }} -{{- fail "kubeStateMetrics.serviceMonitor.namespaceOverride was removed. Please use kube-state-metrics.namespaceOverride instead." }} -{{- end }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kubelet/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kubelet/servicemonitor.yaml deleted file mode 100644 index f570fbf..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/kubelet/servicemonitor.yaml +++ /dev/null @@ -1,246 +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 .Values.kubernetesServiceMonitors.enabled (not .Values.hardenedKubelet.enabled) (not .Values.k3sServer.enabled)) }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kubelet - {{- if .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }} - namespace: {{ .Values.kubelet.namespace }} - {{- else }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - {{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kubelet - {{- with .Values.kubelet.serviceMonitor.additionalLabels }} - {{- toYaml . | nindent 4 }} - {{- end }} -{{- include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - {{- include "servicemonitor.scrapeLimits" .Values.kubelet.serviceMonitor | nindent 2 }} - {{- with .Values.kubelet.serviceMonitor.attachMetadata }} - attachMetadata: - {{- toYaml . | nindent 4 }} - {{- end }} - endpoints: - {{- if .Values.kubelet.serviceMonitor.https }} - - port: https-metrics - scheme: https - {{- if .Values.kubelet.serviceMonitor.interval }} - interval: {{ .Values.kubelet.serviceMonitor.interval }} - {{- end }} - {{- if .Values.kubelet.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }} - {{- end }} - {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }} - {{- end }} - tlsConfig: - caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - insecureSkipVerify: true - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - honorLabels: {{ .Values.kubelet.serviceMonitor.honorLabels }} - honorTimestamps: {{ .Values.kubelet.serviceMonitor.honorTimestamps }} - metricRelabelings: - {{- if .Values.kubelet.serviceMonitor.metricRelabelings }} - {{- tpl (toYaml .Values.kubelet.serviceMonitor.metricRelabelings | nindent 6) . }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName}} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} -{{- if .Values.kubelet.serviceMonitor.relabelings }} - relabelings: -{{ tpl (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.proxyUrl }} - proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }} - {{- end }} - {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }} - {{- end }} - honorLabels: {{ .Values.kubelet.serviceMonitor.honorLabels }} - honorTimestamps: {{ .Values.kubelet.serviceMonitor.honorTimestamps }} - 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: -{{ tpl (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 }} - {{- if .Values.kubelet.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }} - {{- end }} - {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }} - {{- end }} - honorLabels: {{ .Values.kubelet.serviceMonitor.honorLabels }} - honorTimestamps: {{ .Values.kubelet.serviceMonitor.honorTimestamps }} - 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: -{{ tpl (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 }} - {{- if .Values.kubelet.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }} - {{- end }} - {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }} - {{- end }} - honorLabels: {{ .Values.kubelet.serviceMonitor.honorLabels }} - honorTimestamps: {{ .Values.kubelet.serviceMonitor.honorTimestamps }} - 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: -{{ tpl (toYaml .Values.kubelet.serviceMonitor.resourceRelabelings | indent 4) . }} -{{- end }} -{{- end }} - {{- else }} - - port: http-metrics - {{- if .Values.kubelet.serviceMonitor.interval }} - interval: {{ .Values.kubelet.serviceMonitor.interval }} - {{- end }} - {{- if .Values.kubelet.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }} - {{- end }} - {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }} - {{- end }} - honorLabels: {{ .Values.kubelet.serviceMonitor.honorLabels }} - honorTimestamps: {{ .Values.kubelet.serviceMonitor.honorTimestamps }} -{{- if .Values.kubelet.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubelet.serviceMonitor.metricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.relabelings }} - relabelings: -{{ tpl (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 }} - {{- if .Values.kubelet.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }} - {{- end }} - {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }} - {{- end }} - honorLabels: {{ .Values.kubelet.serviceMonitor.honorLabels }} - honorTimestamps: {{ .Values.kubelet.serviceMonitor.honorTimestamps }} -{{- if .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.cAdvisorRelabelings }} - relabelings: -{{ tpl (toYaml .Values.kubelet.serviceMonitor.cAdvisorRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.probes }} - - port: http-metrics - path: /metrics/probes - {{- if .Values.kubelet.serviceMonitor.interval }} - interval: {{ .Values.kubelet.serviceMonitor.interval }} - {{- end }} - {{- if .Values.kubelet.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }} - {{- end }} - {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }} - {{- end }} - honorLabels: {{ .Values.kubelet.serviceMonitor.honorLabels }} - honorTimestamps: {{ .Values.kubelet.serviceMonitor.honorTimestamps }} -{{- if .Values.kubelet.serviceMonitor.probesMetricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubelet.serviceMonitor.probesMetricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.probesRelabelings }} - relabelings: -{{ tpl (toYaml .Values.kubelet.serviceMonitor.probesRelabelings | indent 4) . }} -{{- end }} -{{- 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 }} - {{- if .Values.kubelet.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.kubelet.serviceMonitor.proxyUrl }} - {{- end }} - {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }} - {{- end }} - honorLabels: {{ .Values.kubelet.serviceMonitor.honorLabels }} - honorTimestamps: {{ .Values.kubelet.serviceMonitor.honorTimestamps }} -{{- if .Values.kubelet.serviceMonitor.resourceMetricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubelet.serviceMonitor.resourceMetricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.resourceRelabelings }} - relabelings: -{{ tpl (toYaml .Values.kubelet.serviceMonitor.resourceRelabelings | indent 4) . }} -{{- end }} -{{- end }} -{{- end }} - {{- end }} - jobLabel: k8s-app - namespaceSelector: - matchNames: - - {{ .Values.kubelet.namespace }} - selector: - matchLabels: - app.kubernetes.io/name: kubelet - k8s-app: kubelet -{{- end}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/node-exporter/validate.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/node-exporter/validate.yaml deleted file mode 100644 index bdc73d6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/exporters/node-exporter/validate.yaml +++ /dev/null @@ -1,3 +0,0 @@ -{{- if (and (not .Values.nodeExporter.enabled) .Values.hardenedNodeExporter.enabled) }} -{{ required "Cannot set .Values.hardenedNodeExporter.enabled=true when .Values.nodeExporter.enabled=false" "" }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/extra-objects.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/extra-objects.yaml deleted file mode 100644 index 567f7bf..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/extra-objects.yaml +++ /dev/null @@ -1,4 +0,0 @@ -{{ range .Values.extraManifests }} ---- -{{ tpl (toYaml .) $ }} -{{ end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/configmap-dashboards.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/configmap-dashboards.yaml deleted file mode 100644 index e719009..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/configmap-dashboards.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if or (and .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled) .Values.grafana.forceDeployDashboards }} -{{- $files := .Files.Glob "dashboards-1.14/*.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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/configmaps-datasources.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/configmaps-datasources.yaml deleted file mode 100644 index 718020d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/configmaps-datasources.yaml +++ /dev/null @@ -1,81 +0,0 @@ -{{- if or (and .Values.grafana.enabled .Values.grafana.sidecar.datasources.enabled) .Values.grafana.forceDeployDatasources }} -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 | nindent 4 }} -{{- end }} - labels: - {{ $.Values.grafana.sidecar.datasources.label }}: {{ $.Values.grafana.sidecar.datasources.labelValue | quote }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - datasource.yaml: |- - apiVersion: 1 -{{- if .Values.grafana.deleteDatasources }} - deleteDatasources: -{{ tpl (toYaml .Values.grafana.deleteDatasources | indent 6) . }} -{{- end }} - datasources: -{{- $scrapeInterval := .Values.grafana.sidecar.datasources.defaultDatasourceScrapeInterval | default .Values.prometheus.prometheusSpec.scrapeInterval | default "30s" }} -{{- if .Values.grafana.sidecar.datasources.defaultDatasourceEnabled }} - - name: Prometheus - type: prometheus - uid: {{ .Values.grafana.sidecar.datasources.uid }} - {{- if .Values.grafana.sidecar.datasources.url }} - url: {{ .Values.grafana.sidecar.datasources.url }} - {{- else }} - url: http://{{ template "kube-prometheus-stack.fullname" . }}-prometheus.{{ template "kube-prometheus-stack.namespace" . }}:{{ .Values.prometheus.service.port }}/{{ trimPrefix "/" .Values.prometheus.prometheusSpec.routePrefix }} - {{- end }} - access: proxy - isDefault: {{ .Values.grafana.sidecar.datasources.isDefaultDatasource }} - jsonData: - httpMethod: {{ .Values.grafana.sidecar.datasources.httpMethod }} - timeInterval: {{ $scrapeInterval }} - {{- if .Values.grafana.sidecar.datasources.timeout }} - timeout: {{ .Values.grafana.sidecar.datasources.timeout }} - {{- end }} -{{- if .Values.grafana.sidecar.datasources.exemplarTraceIdDestinations }} - exemplarTraceIdDestinations: - - datasourceUid: {{ .Values.grafana.sidecar.datasources.exemplarTraceIdDestinations.datasourceUid }} - name: {{ .Values.grafana.sidecar.datasources.exemplarTraceIdDestinations.traceIdLabelName }} -{{- end }} -{{- if .Values.grafana.sidecar.datasources.createPrometheusReplicasDatasources }} -{{- range until (int .Values.prometheus.prometheusSpec.replicas) }} - - name: Prometheus-{{ . }} - type: prometheus - uid: {{ $.Values.grafana.sidecar.datasources.uid }}-replica-{{ . }} - url: http://prometheus-{{ template "kube-prometheus-stack.prometheus.crname" $ }}-{{ . }}.prometheus-operated:9090/{{ trimPrefix "/" $.Values.prometheus.prometheusSpec.routePrefix }} - access: proxy - isDefault: false - jsonData: - timeInterval: {{ $scrapeInterval }} -{{- if $.Values.grafana.sidecar.datasources.exemplarTraceIdDestinations }} - exemplarTraceIdDestinations: - - datasourceUid: {{ $.Values.grafana.sidecar.datasources.exemplarTraceIdDestinations.datasourceUid }} - name: {{ $.Values.grafana.sidecar.datasources.exemplarTraceIdDestinations.traceIdLabelName }} -{{- end }} -{{- end }} -{{- end }} -{{- if .Values.grafana.sidecar.datasources.alertmanager.enabled }} - - name: Alertmanager - type: alertmanager - uid: {{ .Values.grafana.sidecar.datasources.alertmanager.uid }} - {{- if .Values.grafana.sidecar.datasources.alertmanager.url }} - url: {{ .Values.grafana.sidecar.datasources.alertmanager.url }} - {{- else }} - url: http://{{ template "kube-prometheus-stack.fullname" . }}-alertmanager.{{ template "kube-prometheus-stack.namespace" . }}:{{ .Values.alertmanager.service.port }}/{{ trimPrefix "/" .Values.alertmanager.alertmanagerSpec.routePrefix }} - {{- end }} - access: proxy - jsonData: - handleGrafanaManagedAlerts: {{ .Values.grafana.sidecar.datasources.alertmanager.handleGrafanaManagedAlerts }} - implementation: {{ .Values.grafana.sidecar.datasources.alertmanager.implementation }} -{{- end }} -{{- end }} -{{- if .Values.grafana.additionalDataSources }} -{{ tpl (toYaml .Values.grafana.additionalDataSources | indent 4) . }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/alertmanager-overview.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/alertmanager-overview.yaml deleted file mode 100644 index dfc26d7..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/alertmanager-overview.yaml +++ /dev/null @@ -1,616 +0,0 @@ -{{- /* -Generated from 'alertmanager-overview' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }} -{{- if and .Values.alertmanager.enabled .Values.alertmanager.serviceMonitor.selfMonitor }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "alertmanager-overview" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - alertmanager-overview.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 1, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "30s", - "rows": [ - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "current set of alerts stored in the Alertmanager", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 2, - "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": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(alertmanager_alerts{namespace=~\"$namespace\",service=~\"$service\"}) by (namespace,service,instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Alerts", - "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": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "rate of successful and invalid alerts received by the Alertmanager", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 3, - "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": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(alertmanager_alerts_received_total{namespace=~\"$namespace\",service=~\"$service\"}[$__rate_interval])) by (namespace,service,instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Received", - "refId": "A" - }, - { - "expr": "sum(rate(alertmanager_alerts_invalid_total{namespace=~\"$namespace\",service=~\"$service\"}[$__rate_interval])) by (namespace,service,instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Invalid", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Alerts receive rate", - "tooltip": { - "shared": true, - "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": true, - "title": "Alerts", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "rate of successful and invalid notifications sent by the Alertmanager", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 4, - "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": "integration", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(alertmanager_notifications_total{namespace=~\"$namespace\",service=~\"$service\", integration=\"$integration\"}[$__rate_interval])) by (integration,namespace,service,instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Total", - "refId": "A" - }, - { - "expr": "sum(rate(alertmanager_notifications_failed_total{namespace=~\"$namespace\",service=~\"$service\", integration=\"$integration\"}[$__rate_interval])) by (integration,namespace,service,instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Failed", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "$integration: Notifications Send Rate", - "tooltip": { - "shared": true, - "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", - "description": "latency of notifications sent by the Alertmanager", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 5, - "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": "integration", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99,\n sum(rate(alertmanager_notification_latency_seconds_bucket{namespace=~\"$namespace\",service=~\"$service\", integration=\"$integration\"}[$__rate_interval])) by (le,namespace,service,instance)\n) \n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} 99th Percentile", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.50,\n sum(rate(alertmanager_notification_latency_seconds_bucket{namespace=~\"$namespace\",service=~\"$service\", integration=\"$integration\"}[$__rate_interval])) by (le,namespace,service,instance)\n) \n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Median", - "refId": "B" - }, - { - "expr": "sum(rate(alertmanager_notification_latency_seconds_sum{namespace=~\"$namespace\",service=~\"$service\", integration=\"$integration\"}[$__rate_interval])) by (namespace,service,instance)\n/\nsum(rate(alertmanager_notification_latency_seconds_count{namespace=~\"$namespace\",service=~\"$service\", integration=\"$integration\"}[$__rate_interval])) by (namespace,service,instance)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Average", - "refId": "C" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "$integration: Notification Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Notifications", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "alertmanager-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "namespace", - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(alertmanager_alerts, namespace)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "service", - "multi": false, - "name": "service", - "options": [ - - ], - "query": "label_values(alertmanager_alerts, service)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "all", - "value": "$__all" - }, - "datasource": "$datasource", - "hide": 2, - "includeAll": true, - "label": null, - "multi": false, - "name": "integration", - "options": [ - - ], - "query": "label_values(alertmanager_notifications_total{integration=~\".*\"}, integration)", - "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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Alertmanager / Overview", - "uid": "alertmanager-overview", - "version": 0 - } -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/apiserver.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/apiserver.yaml deleted file mode 100644 index bd1048b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/apiserver.yaml +++ /dev/null @@ -1,1772 +0,0 @@ -{{- /* -Generated from 'apiserver' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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": "1m", - "legend": { - "alignAsTable": true, - "rightSide": 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": 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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": "1m", - "legend": { - "alignAsTable": true, - "rightSide": 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 - }, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_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": "1m", - "legend": { - "alignAsTable": true, - "rightSide": 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 - }, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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\"}[$__rate_interval])) 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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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\"}[$__rate_interval])) 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, - "interval": "1m", - "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\"}[$__rate_interval])) 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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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\"}[$__rate_interval])", - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(up{job=\"apiserver\"}, 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(up{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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / API server", - "uid": "09ec8aa1e996d6ffcd6817bbaff4db1b", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/cluster-total.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/cluster-total.yaml deleted file mode 100644 index f4be0bb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(up{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\"}, cluster)", - "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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / Networking / Cluster", - "uid": "ff635a025bcfea7bc3dd4f508990a3e9", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/controller-manager.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/controller-manager.yaml deleted file mode 100644 index 8d420d7..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/controller-manager.yaml +++ /dev/null @@ -1,1196 +0,0 @@ -{{- /* -Generated from 'controller-manager' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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": "1m", - "legend": { - "alignAsTable": true, - "rightSide": 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": 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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\", metrics_path=\"/metrics\"})", - {{- else }} - "expr": "sum(up{cluster=\"$cluster\", 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, - "interval": "1m", - "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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\", instance=~\"$instance\"}[$__rate_interval])) by (cluster, instance, name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}} {{`{{`}}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, - "interval": "1m", - "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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\", instance=~\"$instance\"}[$__rate_interval])) by (cluster, instance, name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}} {{`{{`}}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, - "interval": "1m", - "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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\", instance=~\"$instance\"}[$__rate_interval])) by (cluster, instance, name, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}} {{`{{`}}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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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..\"}[$__rate_interval]))", - "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..\"}[$__rate_interval]))", - "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..\"}[$__rate_interval]))", - "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..\"}[$__rate_interval]))", - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\", instance=~\"$instance\", verb=\"POST\"}[$__rate_interval])) 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, - "interval": "1m", - "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.kubeControllerManager.jobName" . }}\", instance=~\"$instance\", verb=\"GET\"}[$__rate_interval])) 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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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.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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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.kubeControllerManager.jobName" . }}\",instance=~\"$instance\"}[$__rate_interval])", - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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.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": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(up{job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\"}, 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(up{cluster=\"$cluster\", 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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / Controller Manager", - "uid": "72e0e05bef5099e5f049b05fdc429ed4", - "version": 0 - } -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/etcd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/etcd.yaml deleted file mode 100644 index 0eeedc6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/etcd.yaml +++ /dev/null @@ -1,1229 +0,0 @@ -{{- /* -Generated from 'etcd' from https://github.com/etcd-io/etcd.git -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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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\"}[$__rate_interval]))", - "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=~\"Unknown|FailedPrecondition|ResourceExhausted|Internal|Unavailable|DataLoss|DeadlineExceeded\"}[$__rate_interval]))", - "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\"}[$__rate_interval])) 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\"}[$__rate_interval])) 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\"}[$__rate_interval])", - "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\"}[$__rate_interval])", - "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\"}[$__rate_interval])) 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\"}[$__rate_interval])) 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\"}[$__rate_interval]))", - "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\"}[$__rate_interval]))", - "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\"}[$__rate_interval]))", - "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 - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "decimals": 0, - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 28 - }, - "hiddenSeries": false, - "id": 42, - "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", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.4.3", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum by (instance, le) (rate(etcd_network_peer_round_trip_time_seconds_bucket{job=\"$cluster\"}[$__rate_interval])))", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Peer round trip time", - "metric": "etcd_network_peer_round_trip_time_seconds_bucket", - "refId": "A", - "step": 2 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Peer round trip time", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:925", - "decimals": null, - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:926", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "title": "New row" - } - ], - "schemaVersion": 13, - "sharedCrosshair": false, - "style": "dark", - "tags": [ - "etcd-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": {{ if (or .Values.grafana.sidecar.dashboards.multicluster.global.enabled .Values.grafana.sidecar.dashboards.multicluster.etcd.enabled) }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [], - "query": "label_values(etcd_server_has_leader, job)", - "refresh": 2, - "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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "etcd", - "uid": "c2f4e12cdf69feb95caa41a5a1b423d9", - "version": 215 - } -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/grafana-overview.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/grafana-overview.yaml deleted file mode 100644 index d260914..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/grafana-overview.yaml +++ /dev/null @@ -1,635 +0,0 @@ -{{- /* -Generated from 'grafana-overview' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "grafana-overview" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - grafana-overview.json: |- - { - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "target": { - "limit": 100, - "matchAny": false, - "tags": [ - - ], - "type": "dashboard" - }, - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 3085, - "iteration": 1631554945276, - "links": [ - - ], - "panels": [ - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "mappings": [ - - ], - "noValue": "0", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - - ] - }, - "gridPos": { - "h": 5, - "w": 6, - "x": 0, - "y": 0 - }, - "id": 6, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "text": { - - }, - "textMode": "auto" - }, - "pluginVersion": "8.1.3", - "targets": [ - { - "expr": "grafana_alerting_result_total{job=~\"$job\", instance=~\"$instance\", state=\"alerting\"}", - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Firing Alerts", - "type": "stat" - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "mappings": [ - - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - - ] - }, - "gridPos": { - "h": 5, - "w": 6, - "x": 6, - "y": 0 - }, - "id": 8, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "text": { - - }, - "textMode": "auto" - }, - "pluginVersion": "8.1.3", - "targets": [ - { - "expr": "sum(grafana_stat_totals_dashboard{job=~\"$job\", instance=~\"$instance\"})", - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Dashboards", - "type": "stat" - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "custom": { - "align": null, - "displayMode": "auto" - }, - "mappings": [ - - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - - ] - }, - "gridPos": { - "h": 5, - "w": 12, - "x": 12, - "y": 0 - }, - "id": 10, - "options": { - "showHeader": true - }, - "pluginVersion": "8.1.3", - "targets": [ - { - "expr": "grafana_build_info{job=~\"$job\", instance=~\"$instance\"}", - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Build Info", - "transformations": [ - { - "id": "labelsToFields", - "options": { - - } - }, - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true, - "Value": true, - "branch": true, - "container": true, - "goversion": true, - "namespace": true, - "pod": true, - "revision": true - }, - "indexByName": { - "Time": 7, - "Value": 11, - "branch": 4, - "container": 8, - "edition": 2, - "goversion": 6, - "instance": 1, - "job": 0, - "namespace": 9, - "pod": 10, - "revision": 5, - "version": 3 - }, - "renameByName": { - - } - } - } - ], - "type": "table" - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "links": [ - - ] - }, - "overrides": [ - - ] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 5 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.1.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum by (status_code) (irate(grafana_http_request_duration_seconds_count{job=~\"$job\", instance=~\"$instance\"}[1m])) ", - "interval": "", - "legendFormat": "{{`{{`}}status_code{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeRegions": [ - - ], - "timeShift": null, - "title": "RPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "$$hashKey": "object:157", - "format": "reqps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:158", - "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": "$datasource", - "fieldConfig": { - "defaults": { - "links": [ - - ] - }, - "overrides": [ - - ] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 5 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.1.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "exemplar": true, - "expr": "histogram_quantile(0.99, sum(irate(grafana_http_request_duration_seconds_bucket{instance=~\"$instance\", job=~\"$job\"}[$__rate_interval])) by (le)) * 1", - "interval": "", - "legendFormat": "99th Percentile", - "refId": "A" - }, - { - "exemplar": true, - "expr": "histogram_quantile(0.50, sum(irate(grafana_http_request_duration_seconds_bucket{instance=~\"$instance\", job=~\"$job\"}[$__rate_interval])) by (le)) * 1", - "interval": "", - "legendFormat": "50th Percentile", - "refId": "B" - }, - { - "exemplar": true, - "expr": "sum(irate(grafana_http_request_duration_seconds_sum{instance=~\"$instance\", job=~\"$job\"}[$__rate_interval])) * 1 / sum(irate(grafana_http_request_duration_seconds_count{instance=~\"$instance\", job=~\"$job\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Average", - "refId": "C" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeRegions": [ - - ], - "timeShift": null, - "title": "Request Latency", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "$$hashKey": "object:210", - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:211", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "schemaVersion": 30, - "style": "dark", - "tags": [ - - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "description": null, - "error": null, - "hide": 0, - "includeAll": false, - "label": "Data Source", - "multi": false, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "queryValue": "", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - }, - { - "allValue": ".*", - "current": { - "selected": false, - "text": [ - "default/grafana" - ], - "value": [ - "default/grafana" - ] - }, - "datasource": "$datasource", - "definition": "label_values(grafana_build_info, job)", - "description": null, - "error": null, - "hide": 0, - "includeAll": true, - "label": null, - "multi": true, - "name": "job", - "options": [ - - ], - "query": { - "query": "label_values(grafana_build_info, job)", - "refId": "Billing Admin-job-Variable-Query" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": ".*", - "current": { - "selected": false, - "text": "All", - "value": "$__all" - }, - "datasource": "$datasource", - "definition": "label_values(grafana_build_info, instance)", - "description": null, - "error": null, - "hide": 0, - "includeAll": true, - "label": null, - "multi": true, - "name": "instance", - "options": [ - - ], - "query": { - "query": "label_values(grafana_build_info, instance)", - "refId": "Billing Admin-instance-Variable-Query" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-6h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Grafana Overview", - "uid": "6be0s85Mk", - "version": 2 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-coredns.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-coredns.yaml deleted file mode 100644 index 7ecca76..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-coredns.yaml +++ /dev/null @@ -1,1534 +0,0 @@ -{{- /* -Generated from 'k8s-coredns' from ../files/dashboards/k8s-coredns.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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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{job=\"coredns\",instance=~\"$instance\"}[5m])) by (proto) or\nsum(rate(coredns_dns_requests_total{job=\"coredns\",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{job=\"coredns\",instance=~\"$instance\"}[5m])) by (type) or \nsum(rate(coredns_dns_requests_total{job=\"coredns\",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{job=\"coredns\",instance=~\"$instance\"}[5m])) by (zone) or\nsum(rate(coredns_dns_requests_total{job=\"coredns\",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{job=\"coredns\",instance=~\"$instance\"}[5m])) or\nsum(rate(coredns_dns_do_requests_total{job=\"coredns\",instance=~\"$instance\"}[5m]))", - "interval": "", - "intervalFactor": 2, - "legendFormat": "DO", - "refId": "A", - "step": 40 - }, - { - "expr": "sum(rate(coredns_dns_request_count_total{job=\"coredns\",instance=~\"$instance\"}[5m])) or\nsum(rate(coredns_dns_requests_total{job=\"coredns\",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{job=\"coredns\",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{job=\"coredns\",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{job=\"coredns\",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{job=\"coredns\",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{job=\"coredns\",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{job=\"coredns\",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{job=\"coredns\",instance=~\"$instance\"}[5m])) by (rcode) or\nsum(rate(coredns_dns_responses_total{job=\"coredns\",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{job=\"coredns\",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{job=\"coredns\",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{job=\"coredns\",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{job=\"coredns\",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{job=\"coredns\",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{job=\"coredns\",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{job=\"coredns\",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{job=\"coredns\",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{job=\"coredns\",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{job=\"coredns\",instance=~\"$instance\"}) by (type) or\nsum(coredns_cache_entries{job=\"coredns\",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{job=\"coredns\",instance=~\"$instance\"}[5m])) by (type)", - "hide": false, - "intervalFactor": 2, - "legendFormat": "hits:{{"{{type}}"}}", - "refId": "A", - "step": 40 - }, - { - "expr": "sum(rate(coredns_cache_misses_total{job=\"coredns\",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": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "includeAll": false, - "label": "Data Source", - "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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "CoreDNS", - "uid": "vkQ0UHxik", - "version": 2 - } -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml deleted file mode 100644 index 93ee57d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml +++ /dev/null @@ -1,3088 +0,0 @@ -{{- /* -Generated from 'k8s-resources-cluster' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": "cluster:node_cpu:ratio_rate5m{cluster=\"$cluster\"}", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "CPU Utilisation", - "tooltip": { - "shared": false, - "sort": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(namespace_cpu:kube_pod_container_resource_requests:sum{cluster=\"$cluster\"}) / sum(kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\",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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(namespace_cpu:kube_pod_container_resource_limits:sum{cluster=\"$cluster\"}) / sum(kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"cpu\",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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(node_memory_MemTotal_bytes{job=\"node-exporter\",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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(namespace_memory:kube_pod_container_resource_requests:sum{cluster=\"$cluster\"}) / sum(kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"memory\",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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(namespace_memory:kube_pod_container_resource_limits:sum{cluster=\"$cluster\"}) / sum(kube_node_status_allocatable{job=\"kube-state-metrics\",resource=\"memory\",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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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_irate{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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{job=\"kube-state-metrics\", 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_irate{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(namespace_cpu:kube_pod_container_resource_requests:sum{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_irate{cluster=\"$cluster\"}) by (namespace) / sum(namespace_cpu:kube_pod_container_resource_requests:sum{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(namespace_cpu:kube_pod_container_resource_limits:sum{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_irate{cluster=\"$cluster\"}) by (namespace) / sum(namespace_cpu:kube_pod_container_resource_limits:sum{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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{job=\"kube-state-metrics\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", container!=\"\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(namespace_memory:kube_pod_container_resource_requests:sum{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(container_memory_rss{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", container!=\"\"}) by (namespace) / sum(namespace_memory:kube_pod_container_resource_requests:sum{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(namespace_memory:kube_pod_container_resource_limits:sum{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - }, - { - "expr": "sum(container_memory_rss{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", container!=\"\"}) by (namespace) / sum(namespace_memory:kube_pod_container_resource_limits:sum{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": 2, - "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": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 2, - "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": "Current Network Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 12, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_receive_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 13, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_transmit_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Bandwidth", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 14, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": "avg(irate(container_network_receive_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 15, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": "avg(irate(container_network_transmit_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Average Container Bandwidth by Namespace", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 16, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_receive_packets_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 17, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_transmit_packets_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Rate of Packets", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 18, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_receive_packets_dropped_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 19, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_transmit_packets_dropped_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Rate of Packets Dropped", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "decimals": -1, - "fill": 10, - "id": 20, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": "ceil(sum by(namespace) (rate(container_fs_reads_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", container!=\"\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", cluster=\"$cluster\", namespace!=\"\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", container!=\"\", cluster=\"$cluster\", namespace!=\"\"}[$__rate_interval])))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "IOPS(Reads+Writes)", - "tooltip": { - "shared": false, - "sort": 2, - "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": 21, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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 by(namespace) (rate(container_fs_reads_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", container!=\"\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", cluster=\"$cluster\", namespace!=\"\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", container!=\"\", cluster=\"$cluster\", namespace!=\"\"}[$__rate_interval]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "ThroughPut(Read+Write)", - "tooltip": { - "shared": false, - "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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Storage IO", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 22, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "sort": { - "col": 4, - "desc": true - }, - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "IOPS(Reads)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": -1, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "IOPS(Writes)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": -1, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "IOPS(Reads + Writes)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": -1, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Throughput(Read)", - "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": "Bps" - }, - { - "alias": "Throughput(Write)", - "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": "Bps" - }, - { - "alias": "Throughput(Read + Write)", - "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": "Bps" - }, - { - "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 by(namespace) (rate(container_fs_reads_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace!=\"\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum by(namespace) (rate(container_fs_writes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace!=\"\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum by(namespace) (rate(container_fs_reads_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace!=\"\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace!=\"\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum by(namespace) (rate(container_fs_reads_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace!=\"\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum by(namespace) (rate(container_fs_writes_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace!=\"\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum by(namespace) (rate(container_fs_reads_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace!=\"\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace!=\"\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Storage IO", - "tooltip": { - "shared": false, - "sort": 2, - "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": "Storage IO - Distribution", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(up{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\"}, 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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / Compute Resources / Cluster", - "uid": "efa86fd1d0c121a26444b636a3f509a8", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-multicluster.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-multicluster.yaml deleted file mode 100644 index 9c29583..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-multicluster.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- /* -Generated from 'k8s-resources-multicluster' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ template "kube-prometheus-stack-grafana.namespace" . }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-resources-multicluster" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-resources-multicluster.json: |- - {{`{"annotations":{"list":[]},"editable":`}}{{ .Values.grafana.defaultDashboardsEditable }}{{`,"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":{"alignAsTable":true,"avg":false,"current":false,"max":false,"min":false,"rightSide":true,"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":"cluster:node_cpu:ratio_rate5m","format":"time_series","instant":true,"refId":"A"}],"thresholds":"70,80","timeFrom":null,"timeShift":null,"title":"CPU Utilisation","tooltip":{"shared":false,"sort":2,"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,"interval":"1m","legend":{"alignAsTable":true,"avg":false,"current":false,"max":false,"min":false,"rightSide":true,"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{job=\"kube-state-metrics\", resource=\"cpu\"}) / sum(kube_node_status_allocatable{job=\"kube-state-metrics\", resource=\"cpu\"})","format":"time_series","instant":true,"refId":"A"}],"thresholds":"70,80","timeFrom":null,"timeShift":null,"title":"CPU Requests Commitment","tooltip":{"shared":false,"sort":2,"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,"interval":"1m","legend":{"alignAsTable":true,"avg":false,"current":false,"max":false,"min":false,"rightSide":true,"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{job=\"kube-state-metrics\", resource=\"cpu\"}) / sum(kube_node_status_allocatable{job=\"kube-state-metrics\", resource=\"cpu\"})","format":"time_series","instant":true,"refId":"A"}],"thresholds":"70,80","timeFrom":null,"timeShift":null,"title":"CPU Limits Commitment","tooltip":{"shared":false,"sort":2,"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,"interval":"1m","legend":{"alignAsTable":true,"avg":false,"current":false,"max":false,"min":false,"rightSide":true,"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) / sum(node_memory_MemTotal_bytes{job=\"node-exporter\"})","format":"time_series","instant":true,"refId":"A"}],"thresholds":"70,80","timeFrom":null,"timeShift":null,"title":"Memory Utilisation","tooltip":{"shared":false,"sort":2,"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,"interval":"1m","legend":{"alignAsTable":true,"avg":false,"current":false,"max":false,"min":false,"rightSide":true,"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{job=\"kube-state-metrics\", resource=\"memory\"}) / sum(kube_node_status_allocatable{job=\"kube-state-metrics\", resource=\"memory\"})","format":"time_series","instant":true,"refId":"A"}],"thresholds":"70,80","timeFrom":null,"timeShift":null,"title":"Memory Requests Commitment","tooltip":{"shared":false,"sort":2,"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,"interval":"1m","legend":{"alignAsTable":true,"avg":false,"current":false,"max":false,"min":false,"rightSide":true,"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{job=\"kube-state-metrics\", resource=\"memory\"}) / sum(kube_node_status_allocatable{job=\"kube-state-metrics\", resource=\"memory\"})","format":"time_series","instant":true,"refId":"A"}],"thresholds":"70,80","timeFrom":null,"timeShift":null,"title":"Memory Limits Commitment","tooltip":{"shared":false,"sort":2,"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":0,"id":7,"interval":"1m","legend":{"alignAsTable":true,"avg":false,"current":false,"max":false,"min":false,"rightSide":true,"show":true,"total":false,"values":false},"lines":true,"linewidth":2,"links":[],"nullPointMode":"null as zero","percentage":false,"pointradius":5,"points":false,"renderer":"flot","seriesOverrides":[],"spaceLength":10,"span":12,"stack":false,"steppedLine":false,"targets":[{"expr":"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate) by (cluster)","format":"time_series","legendFormat":"{{cluster}}","legendLink":null}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"CPU Usage","tooltip":{"shared":false,"sort":2,"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,"interval":"1m","legend":{"alignAsTable":true,"avg":false,"current":false,"max":false,"min":false,"rightSide":true,"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":"Cluster","colorMode":null,"colors":[],"dateFormat":"YYYY-MM-DD HH:mm:ss","decimals":2,"link":true,"linkTargetBlank":false,"linkTooltip":"Drill down","linkUrl":"/d/efa86fd1d0c121a26444b636a3f509a8/k8s-resources-cluster?var-datasource=$datasource&var-cluster=`}}{{ if .Values.grafana.sidecar.dashboards.enableNewTablePanelSyntax }}${__value.text}{{ else }}$__cell{{ end }}{{`","pattern":"cluster","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_irate) by (cluster)","format":"table","instant":true,"legendFormat":"","refId":"A"},{"expr":"sum(kube_pod_container_resource_requests{job=\"kube-state-metrics\", resource=\"cpu\"}) by (cluster)","format":"table","instant":true,"legendFormat":"","refId":"B"},{"expr":"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate) by (cluster) / sum(kube_pod_container_resource_requests{job=\"kube-state-metrics\", resource=\"cpu\"}) by (cluster)","format":"table","instant":true,"legendFormat":"","refId":"C"},{"expr":"sum(kube_pod_container_resource_limits{job=\"kube-state-metrics\", resource=\"cpu\"}) by (cluster)","format":"table","instant":true,"legendFormat":"","refId":"D"},{"expr":"sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate) by (cluster) / sum(kube_pod_container_resource_limits{job=\"kube-state-metrics\", resource=\"cpu\"}) by (cluster)","format":"table","instant":true,"legendFormat":"","refId":"E"}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"CPU Quota","tooltip":{"shared":false,"sort":2,"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":0,"id":9,"interval":"1m","legend":{"alignAsTable":true,"avg":false,"current":false,"max":false,"min":false,"rightSide":true,"show":true,"total":false,"values":false},"lines":true,"linewidth":2,"links":[],"nullPointMode":"null as zero","percentage":false,"pointradius":5,"points":false,"renderer":"flot","seriesOverrides":[],"spaceLength":10,"span":12,"stack":false,"steppedLine":false,"targets":[{"expr":"sum(container_memory_rss{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", container!=\"\"}) by (cluster)","format":"time_series","legendFormat":"{{cluster}}","legendLink":null}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Memory Usage (w/o cache)","tooltip":{"shared":false,"sort":2,"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,"interval":"1m","legend":{"alignAsTable":true,"avg":false,"current":false,"max":false,"min":false,"rightSide":true,"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":"Cluster","colorMode":null,"colors":[],"dateFormat":"YYYY-MM-DD HH:mm:ss","decimals":2,"link":true,"linkTargetBlank":false,"linkTooltip":"Drill down","linkUrl":"/d/efa86fd1d0c121a26444b636a3f509a8/k8s-resources-cluster?var-datasource=$datasource&var-cluster=`}}{{ if .Values.grafana.sidecar.dashboards.enableNewTablePanelSyntax }}${__value.text}{{ else }}$__cell{{ end }}{{`","pattern":"cluster","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_rss{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", container!=\"\"}) by (cluster)","format":"table","instant":true,"legendFormat":"","refId":"A"},{"expr":"sum(kube_pod_container_resource_requests{job=\"kube-state-metrics\", resource=\"memory\"}) by (cluster)","format":"table","instant":true,"legendFormat":"","refId":"B"},{"expr":"sum(container_memory_rss{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", container!=\"\"}) by (cluster) / sum(kube_pod_container_resource_requests{job=\"kube-state-metrics\", resource=\"memory\"}) by (cluster)","format":"table","instant":true,"legendFormat":"","refId":"C"},{"expr":"sum(kube_pod_container_resource_limits{job=\"kube-state-metrics\", resource=\"memory\"}) by (cluster)","format":"table","instant":true,"legendFormat":"","refId":"D"},{"expr":"sum(container_memory_rss{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", container!=\"\"}) by (cluster) / sum(kube_pod_container_resource_limits{job=\"kube-state-metrics\", resource=\"memory\"}) by (cluster)","format":"table","instant":true,"legendFormat":"","refId":"E"}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Requests by Cluster","tooltip":{"shared":false,"sort":2,"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":"default","value":"default"},"hide":0,"label":"Data source","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": "`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`","title":"Kubernetes / Compute Resources / Multi-Cluster","uid":"b59e6c9f2fcbe2e16d77fc492374cc4f","version":0}`}} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml deleted file mode 100644 index 1c32c9c..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml +++ /dev/null @@ -1,2797 +0,0 @@ -{{- /* -Generated from 'k8s-resources-namespace' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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_irate{cluster=\"$cluster\", namespace=\"$namespace\"}) / sum(kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"})", - "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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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_irate{cluster=\"$cluster\", namespace=\"$namespace\"}) / sum(kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"})", - "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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\", image!=\"\"}) / sum(kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"})", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "Memory Utilisation (from requests)", - "tooltip": { - "shared": false, - "sort": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\", image!=\"\"}) / sum(kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"})", - "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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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, - "hiddenSeries": true, - "hideTooltip": true, - "legend": true, - "linewidth": 2, - "stack": false - }, - { - "alias": "quota - limits", - "color": "#FF9830", - "dashes": true, - "fill": 0, - "hiddenSeries": true, - "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_irate{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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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_irate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{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_irate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{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_irate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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, - "hiddenSeries": true, - "hideTooltip": true, - "legend": true, - "linewidth": 2, - "stack": false - }, - { - "alias": "quota - limits", - "color": "#FF9830", - "dashes": true, - "fill": 0, - "hiddenSeries": true, - "hideTooltip": true, - "legend": true, - "linewidth": 2, - "stack": false - } - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(container_memory_working_set_bytes{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\", image!=\"\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(container_memory_working_set_bytes{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\", image!=\"\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(container_memory_working_set_bytes{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\", image!=\"\"}) by (pod) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(container_memory_rss{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - }, - { - "expr": "sum(container_memory_cache{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "G", - "step": 10 - }, - { - "expr": "sum(container_memory_swap{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 2, - "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": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 2, - "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": "Current Network Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 10, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 11, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Bandwidth", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 12, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 13, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Rate of Packets", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 14, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 15, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Rate of Packets Dropped", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "decimals": -1, - "fill": 10, - "id": 16, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": "ceil(sum by(pod) (rate(container_fs_reads_total{container!=\"\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval]) + rate(container_fs_writes_total{container!=\"\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval])))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "IOPS(Reads+Writes)", - "tooltip": { - "shared": false, - "sort": 2, - "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": 17, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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 by(pod) (rate(container_fs_reads_bytes_total{container!=\"\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{container!=\"\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "ThroughPut(Read+Write)", - "tooltip": { - "shared": false, - "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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Storage IO", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 18, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "sort": { - "col": 4, - "desc": true - }, - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "IOPS(Reads)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": -1, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "IOPS(Writes)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": -1, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "IOPS(Reads + Writes)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": -1, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Throughput(Read)", - "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": "Bps" - }, - { - "alias": "Throughput(Write)", - "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": "Bps" - }, - { - "alias": "Throughput(Read + Write)", - "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": "Bps" - }, - { - "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 by(pod) (rate(container_fs_reads_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum by(pod) (rate(container_fs_writes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum by(pod) (rate(container_fs_reads_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum by(pod) (rate(container_fs_reads_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum by(pod) (rate(container_fs_writes_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum by(pod) (rate(container_fs_reads_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Storage IO", - "tooltip": { - "shared": false, - "sort": 2, - "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": "Storage IO - Distribution", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)", - "refresh": 2, - "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_namespace_status_phase{job=\"kube-state-metrics\", cluster=\"$cluster\"}, namespace)", - "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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / Compute Resources / Namespace (Pods)", - "uid": "85a562078cdf77779eaa1add43ccec1e", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-node.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-node.yaml deleted file mode 100644 index e60a42d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-node.yaml +++ /dev/null @@ -1,1026 +0,0 @@ -{{- /* -Generated from 'k8s-resources-node' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": "max capacity", - "color": "#F2495C", - "dashes": true, - "fill": 0, - "hiddenSeries": true, - "hideTooltip": true, - "legend": true, - "linewidth": 2, - "stack": false - } - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(kube_node_status_capacity{cluster=\"$cluster\", node=~\"$node\", resource=\"cpu\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max capacity", - "legendLink": null, - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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_irate{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{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_irate{cluster=\"$cluster\", node=~\"$node\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{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_irate{cluster=\"$cluster\", node=~\"$node\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": "max capacity", - "color": "#F2495C", - "dashes": true, - "fill": 0, - "hiddenSeries": true, - "hideTooltip": true, - "legend": true, - "linewidth": 2, - "stack": false - } - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(kube_node_status_capacity{cluster=\"$cluster\", node=~\"$node\", resource=\"memory\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max capacity", - "legendLink": null, - "step": 10 - }, - { - "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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{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(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{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(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\"$cluster\", 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": 2, - "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": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)", - "refresh": 2, - "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_node_info{cluster=\"$cluster\"}, node)", - "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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / Compute Resources / Node (Pods)", - "uid": "200ac8fdbfbb74b39aff88118e4d1c2c", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml deleted file mode 100644 index 80fab51..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml +++ /dev/null @@ -1,2469 +0,0 @@ -{{- /* -Generated from 'k8s-resources-pod' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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_irate{namespace=\"$namespace\", pod=\"$pod\", cluster=\"$cluster\"}) by (container)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}container{{`}}`}}", - "legendLink": null, - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", resource=\"cpu\"}\n)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "requests", - "legendLink": null, - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", resource=\"cpu\"}\n)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "limits", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": false, - "sort": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\", cluster=\"$cluster\"}[$__rate_interval])) by (container) /sum(increase(container_cpu_cfs_periods_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\", cluster=\"$cluster\"}[$__rate_interval])) 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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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_irate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{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_irate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{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_irate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": true, - "linewidth": 2, - "stack": false - }, - { - "alias": "limits", - "color": "#FF9830", - "dashes": true, - "fill": 0, - "hideTooltip": true, - "legend": true, - "linewidth": 2, - "stack": false - } - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(container_memory_working_set_bytes{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\", image!=\"\"}) by (container)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}container{{`}}`}}", - "legendLink": null, - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", resource=\"memory\"}\n)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "requests", - "legendLink": null, - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", resource=\"memory\"}\n)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "limits", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Usage (WSS)", - "tooltip": { - "shared": false, - "sort": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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 (WSS)", - "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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\", image!=\"\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", image!=\"\"}) by (container) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(container_memory_working_set_bytes{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\", image!=\"\"}) by (container) / sum(cluster:namespace:pod_memory:active:kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(container_memory_rss{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 2, - "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": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_receive_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 7, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_transmit_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Bandwidth", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 8, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_receive_packets_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 9, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_transmit_packets_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Rate of Packets", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 10, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_receive_packets_dropped_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 11, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_transmit_packets_dropped_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Rate of Packets Dropped", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "decimals": -1, - "fill": 10, - "id": 12, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": "ceil(sum by(pod) (rate(container_fs_reads_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\", pod=~\"$pod\"}[$__rate_interval])))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Reads", - "legendLink": null, - "step": 10 - }, - { - "expr": "ceil(sum by(pod) (rate(container_fs_writes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\",namespace=\"$namespace\", pod=~\"$pod\"}[$__rate_interval])))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Writes", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "IOPS", - "tooltip": { - "shared": false, - "sort": 2, - "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": 13, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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 by(pod) (rate(container_fs_reads_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\", pod=~\"$pod\"}[$__rate_interval]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Reads", - "legendLink": null, - "step": 10 - }, - { - "expr": "sum by(pod) (rate(container_fs_writes_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\", pod=~\"$pod\"}[$__rate_interval]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Writes", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "ThroughPut", - "tooltip": { - "shared": false, - "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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Storage IO - Distribution(Pod - Read & Writes)", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "decimals": -1, - "fill": 10, - "id": 14, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": "ceil(sum by(container) (rate(container_fs_reads_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[$__rate_interval])))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}container{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "IOPS(Reads+Writes)", - "tooltip": { - "shared": false, - "sort": 2, - "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": 15, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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 by(container) (rate(container_fs_reads_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[$__rate_interval]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}container{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "ThroughPut(Read+Write)", - "tooltip": { - "shared": false, - "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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Storage IO - Distribution(Containers)", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 16, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "sort": { - "col": 4, - "desc": true - }, - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "IOPS(Reads)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": -1, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "IOPS(Writes)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": -1, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "IOPS(Reads + Writes)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": -1, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Throughput(Read)", - "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": "Bps" - }, - { - "alias": "Throughput(Write)", - "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": "Bps" - }, - { - "alias": "Throughput(Read + Write)", - "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": "Bps" - }, - { - "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 by(container) (rate(container_fs_reads_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum by(container) (rate(container_fs_writes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\",device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum by(container) (rate(container_fs_reads_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[$__rate_interval]) + rate(container_fs_writes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum by(container) (rate(container_fs_reads_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum by(container) (rate(container_fs_writes_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum by(container) (rate(container_fs_reads_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[$__rate_interval]) + rate(container_fs_writes_bytes_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\", container!=\"\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[$__rate_interval]))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Storage IO", - "tooltip": { - "shared": false, - "sort": 2, - "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": "Storage IO - Distribution", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)", - "refresh": 2, - "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_namespace_status_phase{job=\"kube-state-metrics\", cluster=\"$cluster\"}, namespace)", - "refresh": 2, - "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{job=\"kube-state-metrics\", 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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / Compute Resources / Pod", - "uid": "6581e46e4e5c7ba40a07646395ef7b23", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-windows-cluster.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-windows-cluster.yaml deleted file mode 100644 index d77170a..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-windows-cluster.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- /* -Generated from 'k8s-resources-windows-cluster' from https://github.com/kubernetes-monitoring/kubernetes-mixin.git -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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.windowsMonitoring.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ template "kube-prometheus-stack-grafana.namespace" . }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-resources-windows-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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-resources-windows-cluster.json: |- - {{`{"__inputs":[],"__requires":[],"annotations":{"list":[]},"editable":`}}{{ .Values.grafana.defaultDashboardsEditable }}{{`,"gnetId":null,"graphTooltip":0,"hideControls":false,"id":null,"links":[],"refresh":"","rows":[{"collapse":false,"height":"100px","panels":[{"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":"1 - avg(rate(windows_cpu_time_total{cluster=\"$cluster\", job=\"windows-exporter\", mode=\"idle\"}[1m]))","format":"time_series","instant":true,"refId":"A"}],"thresholds":"70,80","timeFrom":null,"timeShift":null,"title":"CPU Utilisation","tooltip":{"shared":true,"sort":2,"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_windows_container_resource_cpu_cores_request{cluster=\"$cluster\"}) / sum(node:windows_node_num_cpu:sum{cluster=\"$cluster\"})","format":"time_series","instant":true,"refId":"A"}],"thresholds":"70,80","timeFrom":null,"timeShift":null,"title":"CPU Requests Commitment","tooltip":{"shared":true,"sort":2,"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":"sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\"$cluster\"}) / sum(node:windows_node_num_cpu:sum{cluster=\"$cluster\"})","format":"time_series","instant":true,"refId":"A"}],"thresholds":"70,80","timeFrom":null,"timeShift":null,"title":"CPU Limits Commitment","tooltip":{"shared":true,"sort":2,"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":"1 - sum(:windows_node_memory_MemFreeCached_bytes:sum{cluster=\"$cluster\"}) / sum(:windows_node_memory_MemTotal_bytes:sum{cluster=\"$cluster\"})","format":"time_series","instant":true,"refId":"A"}],"thresholds":"70,80","timeFrom":null,"timeShift":null,"title":"Memory Utilisation","tooltip":{"shared":true,"sort":2,"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_windows_container_resource_memory_request{cluster=\"$cluster\"}) / sum(:windows_node_memory_MemTotal_bytes:sum{cluster=\"$cluster\"})","format":"time_series","instant":true,"refId":"A"}],"thresholds":"70,80","timeFrom":null,"timeShift":null,"title":"Memory Requests Commitment","tooltip":{"shared":true,"sort":2,"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":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":2,"stack":false,"steppedLine":false,"targets":[{"expr":"sum(kube_pod_windows_container_resource_memory_limit{cluster=\"$cluster\"}) / sum(:windows_node_memory_MemTotal_bytes:sum{cluster=\"$cluster\"})","format":"time_series","instant":true,"refId":"A"}],"thresholds":"70,80","timeFrom":null,"timeShift":null,"title":"Memory Limits Commitment","tooltip":{"shared":true,"sort":2,"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":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":"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\"}) by (namespace)","format":"time_series","legendFormat":"{{namespace}}","legendLink":null}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"CPU Usage","tooltip":{"shared":true,"sort":2,"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":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,"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":"Namespace","colorMode":null,"colors":[],"dateFormat":"YYYY-MM-DD HH:mm:ss","decimals":2,"link":true,"linkTargetBlank":false,"linkTooltip":"Drill down","linkUrl":"/d/490b402361724ab1d4c45666c1fa9b6f/k8s-resources-windows-namespace?var-datasource=$datasource&var-namespace=`}}{{ if .Values.grafana.sidecar.dashboards.enableNewTablePanelSyntax }}${__value.text}{{ else }}$__cell{{ end }}{{`","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(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\"}) by (namespace)","format":"table","instant":true,"legendFormat":"","refId":"A"},{"expr":"sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\"$cluster\"}) by (namespace)","format":"table","instant":true,"legendFormat":"","refId":"B"},{"expr":"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\"}) by (namespace) / sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\"$cluster\"}) by (namespace)","format":"table","instant":true,"legendFormat":"","refId":"C"},{"expr":"sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\"$cluster\"}) by (namespace)","format":"table","instant":true,"legendFormat":"","refId":"D"},{"expr":"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\"}) by (namespace) / sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\"$cluster\"}) by (namespace)","format":"table","instant":true,"legendFormat":"","refId":"E"}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"CPU Quota","tooltip":{"shared":true,"sort":2,"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":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(windows_container_private_working_set_usage{cluster=\"$cluster\"}) by (namespace)","format":"time_series","legendFormat":"{{namespace}}","legendLink":null}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Memory Usage (Private Working Set)","tooltip":{"shared":true,"sort":2,"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":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":11,"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":"decbytes"},{"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":"decbytes"},{"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":"decbytes"},{"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":"Namespace","colorMode":null,"colors":[],"dateFormat":"YYYY-MM-DD HH:mm:ss","decimals":2,"link":true,"linkTargetBlank":false,"linkTooltip":"Drill down","linkUrl":"/d/490b402361724ab1d4c45666c1fa9b6f/k8s-resources-windows-namespace?var-datasource=$datasource&var-namespace=`}}{{ if .Values.grafana.sidecar.dashboards.enableNewTablePanelSyntax }}${__value.text}{{ else }}$__cell{{ end }}{{`","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(windows_container_private_working_set_usage{cluster=\"$cluster\"}) by (namespace)","format":"table","instant":true,"legendFormat":"","refId":"A"},{"expr":"sum(kube_pod_windows_container_resource_memory_request{cluster=\"$cluster\"}) by (namespace)","format":"table","instant":true,"legendFormat":"","refId":"B"},{"expr":"sum(windows_container_private_working_set_usage{cluster=\"$cluster\"}) by (namespace) / sum(kube_pod_windows_container_resource_memory_request{cluster=\"$cluster\"}) by (namespace)","format":"table","instant":true,"legendFormat":"","refId":"C"},{"expr":"sum(kube_pod_windows_container_resource_memory_limit{cluster=\"$cluster\"}) by (namespace)","format":"table","instant":true,"legendFormat":"","refId":"D"},{"expr":"sum(windows_container_private_working_set_usage{cluster=\"$cluster\"}) by (namespace) / sum(kube_pod_windows_container_resource_memory_limit{cluster=\"$cluster\"}) by (namespace)","format":"table","instant":true,"legendFormat":"","refId":"E"}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Requests by Namespace","tooltip":{"shared":true,"sort":2,"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":"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.global.enabled }}0{{ else }}2{{ end }}{{`,"includeAll":false,"label":"cluster","multi":false,"name":"cluster","options":[],"query":"label_values(up{job=\"windows-exporter\"}, cluster)","refresh":2,"regex":"","sort":1,"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": "`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`","title":"Kubernetes / Compute Resources / Cluster(Windows)","uid":"4d08557fd9391b100730f2494bccac68","version":0}`}} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-windows-namespace.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-windows-namespace.yaml deleted file mode 100644 index 13a1fc3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-windows-namespace.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- /* -Generated from 'k8s-resources-windows-namespace' from https://github.com/kubernetes-monitoring/kubernetes-mixin.git -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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.windowsMonitoring.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ template "kube-prometheus-stack-grafana.namespace" . }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-resources-windows-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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-resources-windows-namespace.json: |- - {{`{"__inputs":[],"__requires":[],"annotations":{"list":[]},"editable":`}}{{ .Values.grafana.defaultDashboardsEditable }}{{`,"gnetId":null,"graphTooltip":0,"hideControls":false,"id":null,"links":[],"refresh":"","rows":[{"collapse":false,"height":"250px","panels":[{"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":12,"stack":true,"steppedLine":false,"targets":[{"expr":"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)","format":"time_series","legendFormat":"{{pod}}","legendLink":null}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"CPU Usage","tooltip":{"shared":true,"sort":2,"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":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":"Pod","colorMode":null,"colors":[],"dateFormat":"YYYY-MM-DD HH:mm:ss","decimals":2,"link":true,"linkTargetBlank":false,"linkTooltip":"Drill down","linkUrl":"/d/40597a704a610e936dc6ed374a7ce023/k8s-resources-windows-pod?var-datasource=$datasource&var-namespace=$namespace&var-pod=`}}{{ if .Values.grafana.sidecar.dashboards.enableNewTablePanelSyntax }}${__value.text}{{ else }}$__cell{{ end }}{{`","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(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)","format":"table","instant":true,"legendFormat":"","refId":"A"},{"expr":"sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)","format":"table","instant":true,"legendFormat":"","refId":"B"},{"expr":"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)","format":"table","instant":true,"legendFormat":"","refId":"C"},{"expr":"sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)","format":"table","instant":true,"legendFormat":"","refId":"D"},{"expr":"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)","format":"table","instant":true,"legendFormat":"","refId":"E"}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"CPU Quota","tooltip":{"shared":true,"sort":2,"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":[],"spaceLength":10,"span":12,"stack":true,"steppedLine":false,"targets":[{"expr":"sum(windows_container_private_working_set_usage{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)","format":"time_series","legendFormat":"{{pod}}","legendLink":null}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Memory Usage","tooltip":{"shared":true,"sort":2,"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":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":"decbytes"},{"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":"decbytes"},{"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":"decbytes"},{"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/40597a704a610e936dc6ed374a7ce023/k8s-resources-windows-pod?var-datasource=$datasource&var-namespace=$namespace&var-pod=`}}{{ if .Values.grafana.sidecar.dashboards.enableNewTablePanelSyntax }}${__value.text}{{ else }}$__cell{{ end }}{{`","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(windows_container_private_working_set_usage{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)","format":"table","instant":true,"legendFormat":"","refId":"A"},{"expr":"sum(kube_pod_windows_container_resource_memory_request{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)","format":"table","instant":true,"legendFormat":"","refId":"B"},{"expr":"sum(windows_container_private_working_set_usage{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(kube_pod_windows_container_resource_memory_request{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)","format":"table","instant":true,"legendFormat":"","refId":"C"},{"expr":"sum(kube_pod_windows_container_resource_memory_limit{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)","format":"table","instant":true,"legendFormat":"","refId":"D"},{"expr":"sum(windows_container_private_working_set_usage{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(kube_pod_windows_container_resource_memory_limit{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)","format":"table","instant":true,"legendFormat":"","refId":"E"}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Memory Quota","tooltip":{"shared":true,"sort":2,"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":{"selected":true,"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.global.enabled }}0{{ else }}2{{ end }}{{`,"includeAll":false,"label":"cluster","multi":false,"name":"cluster","options":[],"query":"label_values(up{job=\"windows-exporter\"}, 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(windows_pod_container_available{cluster=\"$cluster\"}, namespace)","refresh":2,"regex":"","sort":1,"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": "`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`","title":"Kubernetes / Compute Resources / Namespace(Windows)","uid":"490b402361724ab1d4c45666c1fa9b6f","version":0}`}} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-windows-pod.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-windows-pod.yaml deleted file mode 100644 index 6686e54..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-windows-pod.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- /* -Generated from 'k8s-resources-windows-pod' from https://github.com/kubernetes-monitoring/kubernetes-mixin.git -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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.windowsMonitoring.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ template "kube-prometheus-stack-grafana.namespace" . }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-resources-windows-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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-resources-windows-pod.json: |- - {{`{"__inputs":[],"__requires":[],"annotations":{"list":[]},"editable":`}}{{ .Values.grafana.defaultDashboardsEditable }}{{`,"gnetId":null,"graphTooltip":0,"hideControls":false,"id":null,"links":[],"refresh":"","rows":[{"collapse":false,"height":"250px","panels":[{"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":12,"stack":true,"steppedLine":false,"targets":[{"expr":"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)","format":"time_series","legendFormat":"{{container}}","legendLink":null}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"CPU Usage","tooltip":{"shared":true,"sort":2,"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":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(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)","format":"table","instant":true,"legendFormat":"","refId":"A"},{"expr":"sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)","format":"table","instant":true,"legendFormat":"","refId":"B"},{"expr":"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container) / sum(kube_pod_windows_container_resource_cpu_cores_request{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)","format":"table","instant":true,"legendFormat":"","refId":"C"},{"expr":"sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)","format":"table","instant":true,"legendFormat":"","refId":"D"},{"expr":"sum(namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container) / sum(kube_pod_windows_container_resource_cpu_cores_limit{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)","format":"table","instant":true,"legendFormat":"","refId":"E"}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"CPU Quota","tooltip":{"shared":true,"sort":2,"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":[],"spaceLength":10,"span":12,"stack":true,"steppedLine":false,"targets":[{"expr":"sum(windows_container_private_working_set_usage{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)","format":"time_series","legendFormat":"{{container}}","legendLink":null}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Memory Usage","tooltip":{"shared":true,"sort":2,"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 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":"decbytes"},{"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":"decbytes"},{"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":"decbytes"},{"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":"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(windows_container_private_working_set_usage{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)","format":"table","instant":true,"legendFormat":"","refId":"A"},{"expr":"sum(kube_pod_windows_container_resource_memory_request{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)","format":"table","instant":true,"legendFormat":"","refId":"B"},{"expr":"sum(windows_container_private_working_set_usage{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container) / sum(kube_pod_windows_container_resource_memory_request{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)","format":"table","instant":true,"legendFormat":"","refId":"C"},{"expr":"sum(kube_pod_windows_container_resource_memory_limit{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)","format":"table","instant":true,"legendFormat":"","refId":"D"},{"expr":"sum(windows_container_private_working_set_usage{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container) / sum(kube_pod_windows_container_resource_memory_limit{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)","format":"table","instant":true,"legendFormat":"","refId":"E"}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Memory Quota","tooltip":{"shared":true,"sort":2,"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,"fillGradient":0,"id":6,"legend":{"alignAsTable":true,"avg":true,"current":true,"max":false,"min":false,"rightSide":true,"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":"sort_desc(sum by (container) (rate(windows_container_network_received_bytes_total{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[1m])))","format":"time_series","intervalFactor":2,"legendFormat":"Received : {{ container }}","refId":"A"},{"expr":"sort_desc(sum by (container) (rate(windows_container_network_transmitted_bytes_total{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[1m])))","format":"time_series","intervalFactor":2,"legendFormat":"Transmitted : {{ container }}","refId":"B"}],"thresholds":[],"timeFrom":null,"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":[{"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":true,"title":"Network I/O","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":{},"datasource":"$datasource","hide":`}}{{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}{{`,"includeAll":false,"label":"cluster","multi":false,"name":"cluster","options":[],"query":"label_values(up{job=\"windows-exporter\"}, 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(windows_pod_container_available{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":"Pod","multi":false,"name":"pod","options":[],"query":"label_values(windows_pod_container_available{cluster=\"$cluster\",namespace=\"$namespace\"}, pod)","refresh":2,"regex":"","sort":1,"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": "`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`","title":"Kubernetes / Compute Resources / Pod(Windows)","uid":"40597a704a610e936dc6ed374a7ce023","version":0}`}} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-workload.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-workload.yaml deleted file mode 100644 index e2a63ae..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-workload.yaml +++ /dev/null @@ -1,2024 +0,0 @@ -{{- /* -Generated from 'k8s-resources-workload' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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_irate{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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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_irate{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{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\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_irate{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{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\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{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\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_irate{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{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\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{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\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{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\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{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\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": 2, - "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": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 2, - "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": "Current Network Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 6, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_receive_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 7, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_transmit_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Bandwidth", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 8, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": "(avg(irate(container_network_receive_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 9, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": "(avg(irate(container_network_transmit_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Average Container Bandwidth by Pod", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 10, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_receive_packets_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 11, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_transmit_packets_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Rate of Packets", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 12, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_receive_packets_dropped_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 13, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_transmit_packets_dropped_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Rate of Packets Dropped", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)", - "refresh": 2, - "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_namespace_status_phase{job=\"kube-state-metrics\", cluster=\"$cluster\"}, namespace)", - "refresh": 2, - "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_type)", - "refresh": 2, - "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_type=\"$type\"}, workload)", - "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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / Compute Resources / Workload", - "uid": "a164a7f0339f99e89cea5cb47e9be617", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-workloads-namespace.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-workloads-namespace.yaml deleted file mode 100644 index 95d758e..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-resources-workloads-namespace.yaml +++ /dev/null @@ -1,2189 +0,0 @@ -{{- /* -Generated from 'k8s-resources-workloads-namespace' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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, - "hiddenSeries": true, - "hideTooltip": true, - "legend": true, - "linewidth": 2, - "stack": false - }, - { - "alias": "quota - limits", - "color": "#FF9830", - "dashes": true, - "fill": 0, - "hiddenSeries": true, - "hideTooltip": true, - "legend": true, - "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_irate{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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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_irate{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{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\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_irate{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{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\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{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\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_irate{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{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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, - "hiddenSeries": true, - "hideTooltip": true, - "legend": true, - "linewidth": 2, - "stack": false - }, - { - "alias": "quota - limits", - "color": "#FF9830", - "dashes": true, - "fill": 0, - "hiddenSeries": true, - "hideTooltip": true, - "legend": true, - "linewidth": 2, - "stack": false - } - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(\n container_memory_working_set_bytes{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 2, - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\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{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\"}\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": 2, - "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": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 2, - "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": "Current Network Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 6, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_receive_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 7, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_transmit_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Bandwidth", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 8, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": "(avg(irate(container_network_receive_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 9, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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": "(avg(irate(container_network_transmit_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Average Container Bandwidth by Workload", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 10, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_receive_packets_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 11, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_transmit_packets_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Rate of Packets", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 12, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_receive_packets_dropped_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 13, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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(irate(container_network_transmit_packets_dropped_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": 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": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Rate of Packets Dropped", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(up{job=\"kube-state-metrics\"}, cluster)", - "refresh": 2, - "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{job=\"kube-state-metrics\", cluster=\"$cluster\"}, namespace)", - "refresh": 2, - "regex": "", - "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": 2, - "regex": "", - "skipUrlSync": false, - "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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / Compute Resources / Namespace (Workloads)", - "uid": "a87fb0d919ec0ea5f6543124e16c42a5", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-windows-cluster-rsrc-use.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-windows-cluster-rsrc-use.yaml deleted file mode 100644 index d9ce9d7..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-windows-cluster-rsrc-use.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- /* -Generated from 'k8s-windows-cluster-rsrc-use' from https://github.com/kubernetes-monitoring/kubernetes-mixin.git -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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.windowsMonitoring.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ template "kube-prometheus-stack-grafana.namespace" . }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-windows-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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-windows-cluster-rsrc-use.json: |- - {{`{"__inputs":[],"__requires":[],"annotations":{"list":[]},"editable":`}}{{ .Values.grafana.defaultDashboardsEditable }}{{`,"gnetId":null,"graphTooltip":0,"hideControls":false,"id":null,"links":[],"refresh":"","rows":[{"collapse":false,"height":"250px","panels":[{"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":12,"stack":true,"steppedLine":false,"targets":[{"expr":"node:windows_node_cpu_utilisation:avg1m{cluster=\"$cluster\"} * node:windows_node_num_cpu:sum{cluster=\"$cluster\"} / scalar(sum(node:windows_node_num_cpu:sum{cluster=\"$cluster\"}))","format":"time_series","legendFormat":"{{instance}}","legendLink":"/d/96e7484b0bb53b74fbc2bcb7723cd40b/k8s-windows-node-rsrc-use"}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"CPU Utilisation","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":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:windows_node_memory_utilisation:ratio{cluster=\"$cluster\"}","format":"time_series","legendFormat":"{{instance}}","legendLink":"/d/96e7484b0bb53b74fbc2bcb7723cd40b/k8s-windows-node-rsrc-use"}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Memory Utilisation","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":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:windows_node_memory_swap_io_pages:irate{cluster=\"$cluster\"}","format":"time_series","legendFormat":"{{instance}}","legendLink":"/d/96e7484b0bb53b74fbc2bcb7723cd40b/k8s-windows-node-rsrc-use"}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Memory Saturation (Swap I/O Pages)","tooltip":{"shared":true,"sort":2,"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":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":12,"stack":true,"steppedLine":false,"targets":[{"expr":"node:windows_node_disk_utilisation:avg_irate{cluster=\"$cluster\"} / scalar(node:windows_node:sum{cluster=\"$cluster\"})","format":"time_series","legendFormat":"{{instance}}","legendLink":"/d/96e7484b0bb53b74fbc2bcb7723cd40b/k8s-windows-node-rsrc-use"}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Disk IO Utilisation","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":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":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:windows_node_net_utilisation:sum_irate{cluster=\"$cluster\"}","format":"time_series","legendFormat":"{{instance}}","legendLink":"/d/96e7484b0bb53b74fbc2bcb7723cd40b/k8s-windows-node-rsrc-use"}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Net Utilisation (Transmitted)","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":"short","label":null,"logBase":1,"max":null,"min":null,"show":false}]},{"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:windows_node_net_saturation:sum_irate{cluster=\"$cluster\"}","format":"time_series","legendFormat":"{{instance}}","legendLink":"/d/96e7484b0bb53b74fbc2bcb7723cd40b/k8s-windows-node-rsrc-use"}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Net Saturation (Dropped)","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":"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":"sum by (instance)(node:windows_node_filesystem_usage:{cluster=\"$cluster\"})\n","format":"time_series","legendFormat":"{{instance}}","legendLink":"/d/96e7484b0bb53b74fbc2bcb7723cd40b/k8s-windows-node-rsrc-use"}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Disk Capacity","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":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":"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.global.enabled }}0{{ else }}2{{ end }}{{`,"includeAll":false,"label":"cluster","multi":false,"name":"cluster","options":[],"query":"label_values(up{job=\"windows-exporter\"}, cluster)","refresh":2,"regex":"","sort":1,"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": "`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`","title":"Kubernetes / USE Method / Cluster(Windows)","uid":"53a43377ec9aaf2ff64dfc7a1f539334","version":0}`}} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-windows-node-rsrc-use.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-windows-node-rsrc-use.yaml deleted file mode 100644 index a760849..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/k8s-windows-node-rsrc-use.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- /* -Generated from 'k8s-windows-node-rsrc-use' from https://github.com/kubernetes-monitoring/kubernetes-mixin.git -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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled .Values.windowsMonitoring.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ template "kube-prometheus-stack-grafana.namespace" . }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-windows-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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-windows-node-rsrc-use.json: |- - {{`{"__inputs":[],"__requires":[],"annotations":{"list":[]},"editable":`}}{{ .Values.grafana.defaultDashboardsEditable }}{{`,"gnetId":null,"graphTooltip":0,"hideControls":false,"id":null,"links":[],"refresh":"","rows":[{"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":"node:windows_node_cpu_utilisation:avg1m{cluster=\"$cluster\", instance=\"$instance\"}","format":"time_series","legendFormat":"Utilisation","legendLink":null}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"CPU Utilisation","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":"short","label":null,"logBase":1,"max":null,"min":null,"show":false}]},{"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":"sum by (core) (irate(windows_cpu_time_total{cluster=\"$cluster\", job=\"windows-exporter\", mode!=\"idle\", instance=\"$instance\"}[$__rate_interval]))","format":"time_series","legendFormat":"{{core}}","legendLink":null}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"CPU Usage Per Core","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":"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":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":"node:windows_node_memory_utilisation:{cluster=\"$cluster\", instance=\"$instance\"}","format":"time_series","legendFormat":"Memory","legendLink":null}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Memory Utilisation %","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":"short","label":null,"logBase":1,"max":null,"min":null,"show":false}]},{"aliasColors":{},"bars":false,"dashLength":10,"dashes":false,"datasource":"$datasource","fill":1,"fillGradient":0,"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":"max(\n windows_os_visible_memory_bytes{cluster=\"$cluster\", job=\"windows-exporter\", instance=\"$instance\"}\n - windows_memory_available_bytes{cluster=\"$cluster\", job=\"windows-exporter\", instance=\"$instance\"}\n)\n","format":"time_series","intervalFactor":2,"legendFormat":"memory used","refId":"A"},{"expr":"max(node:windows_node_memory_totalCached_bytes:sum{cluster=\"$cluster\", instance=\"$instance\"})","format":"time_series","intervalFactor":2,"legendFormat":"memory cached","refId":"B"},{"expr":"max(windows_memory_available_bytes{cluster=\"$cluster\", job=\"windows-exporter\", instance=\"$instance\"})","format":"time_series","intervalFactor":2,"legendFormat":"memory free","refId":"C"}],"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":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,"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":4,"stack":false,"steppedLine":false,"targets":[{"expr":"node:windows_node_memory_swap_io_pages:irate{cluster=\"$cluster\", instance=\"$instance\"}","format":"time_series","legendFormat":"Swap IO","legendLink":null}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Memory Saturation (Swap I/O) Pages","tooltip":{"shared":true,"sort":2,"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":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:windows_node_disk_utilisation:avg_irate{cluster=\"$cluster\", instance=\"$instance\"}","format":"time_series","legendFormat":"Utilisation","legendLink":null}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Disk IO Utilisation","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":"short","label":null,"logBase":1,"max":null,"min":null,"show":false}]},{"aliasColors":{},"bars":false,"dashLength":10,"dashes":false,"datasource":"$datasource","fill":1,"fillGradient":0,"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":[{"alias":"read","yaxis":1},{"alias":"io time","yaxis":2}],"spaceLength":10,"span":6,"stack":false,"steppedLine":false,"targets":[{"expr":"max(rate(windows_logical_disk_read_bytes_total{cluster=\"$cluster\", job=\"windows-exporter\", instance=\"$instance\"}[2m]))","format":"time_series","intervalFactor":2,"legendFormat":"read","refId":"A"},{"expr":"max(rate(windows_logical_disk_write_bytes_total{cluster=\"$cluster\", job=\"windows-exporter\", instance=\"$instance\"}[2m]))","format":"time_series","intervalFactor":2,"legendFormat":"written","refId":"B"},{"expr":"max(rate(windows_logical_disk_read_seconds_total{cluster=\"$cluster\", job=\"windows-exporter\", instance=\"$instance\"}[2m]) + rate(windows_logical_disk_write_seconds_total{cluster=\"$cluster\", job=\"windows-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":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":"ms","label":null,"logBase":1,"max":null,"min":null,"show":true}]}],"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":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":6,"stack":false,"steppedLine":false,"targets":[{"expr":"node:windows_node_net_utilisation:sum_irate{cluster=\"$cluster\", instance=\"$instance\"}","format":"time_series","legendFormat":"Utilisation","legendLink":null}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Net Utilisation (Transmitted)","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":"short","label":null,"logBase":1,"max":null,"min":null,"show":false}]},{"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":6,"stack":false,"steppedLine":false,"targets":[{"expr":"node:windows_node_net_saturation:sum_irate{cluster=\"$cluster\", instance=\"$instance\"}","format":"time_series","legendFormat":"Saturation","legendLink":null}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Net Saturation (Dropped)","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":"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":11,"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:windows_node_filesystem_usage:{cluster=\"$cluster\", instance=\"$instance\"}\n","format":"time_series","legendFormat":"{{volume}}","legendLink":null}],"thresholds":[],"timeFrom":null,"timeShift":null,"title":"Disk Utilisation","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":"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":"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.global.enabled }}0{{ else }}2{{ end }}{{`,"includeAll":false,"label":"cluster","multi":false,"name":"cluster","options":[],"query":"label_values(up{job=\"windows-exporter\"}, cluster)","refresh":2,"regex":"","sort":1,"tagValuesQuery":"","tags":[],"tagsQuery":"","type":"query","useTags":false},{"allValue":null,"current":{},"datasource":"$datasource","hide":0,"includeAll":false,"label":"Instance","multi":false,"name":"instance","options":[],"query":"label_values(windows_system_system_up_time{cluster=\"$cluster\"}, instance)","refresh":2,"regex":"","sort":1,"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": "`}}{{ .Values.grafana.defaultDashboardsTimezone }}{{`","title":"Kubernetes / USE Method / Node(Windows)","uid":"96e7484b0bb53b74fbc2bcb7723cd40b","version":0}`}} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/kubelet.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/kubelet.yaml deleted file mode 100644 index 74a5303..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/kubelet.yaml +++ /dev/null @@ -1,2256 +0,0 @@ -{{- /* -Generated from 'kubelet' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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": [ - - ], - "panels": [ - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "links": [ - - ], - "mappings": [ - - ], - "thresholds": { - "mode": "absolute", - "steps": [ - - ] - }, - "unit": "none" - } - }, - "gridPos": { - "h": 7, - "w": 4, - "x": 0, - "y": 0 - }, - "id": 2, - "links": [ - - ], - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "7", - "targets": [ - { - "expr": "sum(kubelet_node_name{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "title": "Running Kubelets", - "transparent": false, - "type": "stat" - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "links": [ - - ], - "mappings": [ - - ], - "thresholds": { - "mode": "absolute", - "steps": [ - - ] - }, - "unit": "none" - } - }, - "gridPos": { - "h": 7, - "w": 4, - "x": 4, - "y": 0 - }, - "id": 3, - "links": [ - - ], - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "7", - "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" - } - ], - "title": "Running Pods", - "transparent": false, - "type": "stat" - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "links": [ - - ], - "mappings": [ - - ], - "thresholds": { - "mode": "absolute", - "steps": [ - - ] - }, - "unit": "none" - } - }, - "gridPos": { - "h": 7, - "w": 4, - "x": 8, - "y": 0 - }, - "id": 4, - "links": [ - - ], - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "7", - "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" - } - ], - "title": "Running Containers", - "transparent": false, - "type": "stat" - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "links": [ - - ], - "mappings": [ - - ], - "thresholds": { - "mode": "absolute", - "steps": [ - - ] - }, - "unit": "none" - } - }, - "gridPos": { - "h": 7, - "w": 4, - "x": 12, - "y": 0 - }, - "id": 5, - "links": [ - - ], - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "7", - "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" - } - ], - "title": "Actual Volume Count", - "transparent": false, - "type": "stat" - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "links": [ - - ], - "mappings": [ - - ], - "thresholds": { - "mode": "absolute", - "steps": [ - - ] - }, - "unit": "none" - } - }, - "gridPos": { - "h": 7, - "w": 4, - "x": 16, - "y": 0 - }, - "id": 6, - "links": [ - - ], - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "7", - "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" - } - ], - "title": "Desired Volume Count", - "transparent": false, - "type": "stat" - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "links": [ - - ], - "mappings": [ - - ], - "thresholds": { - "mode": "absolute", - "steps": [ - - ] - }, - "unit": "none" - } - }, - "gridPos": { - "h": 7, - "w": 4, - "x": 20, - "y": 0 - }, - "id": 7, - "links": [ - - ], - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "7", - "targets": [ - { - "expr": "sum(rate(kubelet_node_config_error{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\"}[$__rate_interval]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "title": "Config Error Count", - "transparent": false, - "type": "stat" - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 7 - }, - "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, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(kubelet_runtime_operations_total{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}[$__rate_interval])) 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": true, - "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": { - "h": 7, - "w": 12, - "x": 12, - "y": 7 - }, - "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, - "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\"}[$__rate_interval])) 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": true, - "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": { - "h": 7, - "w": 24, - "x": 0, - "y": 14 - }, - "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, - "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\"}[$__rate_interval])) 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": 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": "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": { - "h": 7, - "w": 12, - "x": 0, - "y": 21 - }, - "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, - "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\"}[$__rate_interval])) 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\"}[$__rate_interval])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} worker", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Pod Start Rate", - "tooltip": { - "shared": true, - "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": { - "h": 7, - "w": 12, - "x": 12, - "y": 21 - }, - "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, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(kubelet_pod_start_duration_seconds_bucket{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}[$__rate_interval])) 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\"}[$__rate_interval])) by (instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} worker", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Pod Start Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 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": { - "h": 7, - "w": 12, - "x": 0, - "y": 28 - }, - "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, - "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\"}[$__rate_interval])) 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": true, - "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": { - "h": 7, - "w": 12, - "x": 12, - "y": 28 - }, - "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, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(storage_operation_errors_total{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}[$__rate_interval])) 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": true, - "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": { - "h": 7, - "w": 24, - "x": 0, - "y": 35 - }, - "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, - "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\"}[$__rate_interval])) 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": 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": "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": { - "h": 7, - "w": 12, - "x": 0, - "y": 42 - }, - "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, - "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\"}[$__rate_interval])) 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": true, - "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": { - "h": 7, - "w": 12, - "x": 12, - "y": 42 - }, - "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, - "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\"}[$__rate_interval])) 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": 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": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Pod lifecycle event generator", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 49 - }, - "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, - "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\"}[$__rate_interval])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "PLEG relist rate", - "tooltip": { - "shared": true, - "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": { - "h": 7, - "w": 12, - "x": 12, - "y": 49 - }, - "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, - "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\"}[$__rate_interval])) by (instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "PLEG relist interval", - "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": "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": { - "h": 7, - "w": 24, - "x": 0, - "y": 56 - }, - "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, - "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\"}[$__rate_interval])) by (instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "PLEG relist duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 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": { - "h": 7, - "w": 24, - "x": 0, - "y": 63 - }, - "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, - "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..\"}[$__rate_interval]))", - "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..\"}[$__rate_interval]))", - "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..\"}[$__rate_interval]))", - "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..\"}[$__rate_interval]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "5xx", - "refId": "D" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "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": [ - { - "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": { - "h": 7, - "w": 24, - "x": 0, - "y": 70 - }, - "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, - "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\"}[$__rate_interval])) 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": 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": "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": { - "h": 7, - "w": 8, - "x": 0, - "y": 77 - }, - "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, - "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": 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": "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": { - "h": 7, - "w": 8, - "x": 8, - "y": 77 - }, - "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, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(process_cpu_seconds_total{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}[$__rate_interval])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "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": "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": { - "h": 7, - "w": 8, - "x": 16, - "y": 77 - }, - "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, - "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": 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 - } - ] - } - ], - "refresh": "10s", - "rows": [ - - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(up{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\"}, cluster)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": true, - "label": "instance", - "multi": false, - "name": "instance", - "options": [ - - ], - "query": "label_values(up{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / Kubelet", - "uid": "3138fa155d5915769fbded898ac09fd9", - "version": 0 - } -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/namespace-by-pod.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/namespace-by-pod.yaml deleted file mode 100644 index f5c7284..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(up{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\"}, cluster)", - "refresh": 2, - "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": 2, - "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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / Networking / Namespace (Pods)", - "uid": "8b7a8b326d7a6f1f04244066368c67af", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/namespace-by-workload.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/namespace-by-workload.yaml deleted file mode 100644 index 801b09c..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(up{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\"}, cluster)", - "refresh": 2, - "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": 2, - "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": 2, - "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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / Networking / Namespace (Workload)", - "uid": "bbb2a765a623ae38130206c7d94a160f", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/node-cluster-rsrc-use.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/node-cluster-rsrc-use.yaml deleted file mode 100644 index 9869a3d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/node-cluster-rsrc-use.yaml +++ /dev/null @@ -1,1063 +0,0 @@ -{{- /* -Generated from 'node-cluster-rsrc-use' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled (or .Values.nodeExporter.enabled .Values.nodeExporter.forceDeployDashboards) }} -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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - node-cluster-rsrc-use.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 1, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "30s", - "rows": [ - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 2, - "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": true, - "steppedLine": false, - "targets": [ - { - "expr": "((\n instance:node_cpu_utilisation:rate5m{job=\"node-exporter\", cluster=\"$cluster\"}\n *\n instance:node_num_cpu:sum{job=\"node-exporter\", cluster=\"$cluster\"}\n) != 0 )\n/ scalar(sum(instance:node_num_cpu:sum{job=\"node-exporter\", cluster=\"$cluster\"}))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}} instance {{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Utilisation", - "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": null, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 3, - "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": true, - "steppedLine": false, - "targets": [ - { - "expr": "(\n instance:node_load1_per_cpu:ratio{job=\"node-exporter\", cluster=\"$cluster\"}\n / scalar(count(instance:node_load1_per_cpu:ratio{job=\"node-exporter\", cluster=\"$cluster\"}))\n) != 0\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Saturation (Load1 per CPU)", - "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": null, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 4, - "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": true, - "steppedLine": false, - "targets": [ - { - "expr": "(\n instance:node_memory_utilisation:ratio{job=\"node-exporter\", cluster=\"$cluster\"}\n / scalar(count(instance:node_memory_utilisation:ratio{job=\"node-exporter\", cluster=\"$cluster\"}))\n) != 0\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Utilisation", - "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": null, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 5, - "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": true, - "steppedLine": false, - "targets": [ - { - "expr": "instance:node_vmstat_pgmajfault:rate5m{job=\"node-exporter\", cluster=\"$cluster\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Saturation (Major Page Faults)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "rds", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "rds", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 6, - "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": [ - { - "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:rate5m{job=\"node-exporter\", cluster=\"$cluster\"} != 0", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Receive", - "refId": "A" - }, - { - "expr": "instance:node_network_transmit_bytes_excluding_lo:rate5m{job=\"node-exporter\", cluster=\"$cluster\"} != 0", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Transmit", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Network Utilisation (Bytes Receive/Transmit)", - "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": null, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 7, - "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": [ - { - "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:rate5m{job=\"node-exporter\", cluster=\"$cluster\"} != 0", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Receive", - "refId": "A" - }, - { - "expr": "instance:node_network_transmit_drop_excluding_lo:rate5m{job=\"node-exporter\", cluster=\"$cluster\"} != 0", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Transmit", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Network Saturation (Drops Receive/Transmit)", - "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": null, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 8, - "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": true, - "steppedLine": false, - "targets": [ - { - "expr": "(\n instance_device:node_disk_io_time_seconds:rate5m{job=\"node-exporter\", cluster=\"$cluster\"}\n / scalar(count(instance_device:node_disk_io_time_seconds:rate5m{job=\"node-exporter\", cluster=\"$cluster\"}))\n) != 0\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}device{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk IO Utilisation", - "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": null, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 9, - "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": true, - "steppedLine": false, - "targets": [ - { - "expr": "(\n instance_device:node_disk_io_time_weighted_seconds:rate5m{job=\"node-exporter\", cluster=\"$cluster\"}\n / scalar(count(instance_device:node_disk_io_time_weighted_seconds:rate5m{job=\"node-exporter\", cluster=\"$cluster\"}))\n) != 0\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}device{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk IO Saturation", - "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": null, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Disk IO", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 10, - "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": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum without (device) (\n max without (fstype, mountpoint) ((\n node_filesystem_size_bytes{job=\"node-exporter\", fstype!=\"\", mountpoint!=\"\", cluster=\"$cluster\"}\n -\n node_filesystem_avail_bytes{job=\"node-exporter\", fstype!=\"\", mountpoint!=\"\", cluster=\"$cluster\"}\n ) != 0)\n)\n/ scalar(sum(max without (fstype, mountpoint) (node_filesystem_size_bytes{job=\"node-exporter\", fstype!=\"\", mountpoint!=\"\", cluster=\"$cluster\"})))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk Space Utilisation", - "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": null, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Disk Space", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "node-exporter-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(node_time_seconds, 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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Node Exporter / USE Method / Cluster", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/node-rsrc-use.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/node-rsrc-use.yaml deleted file mode 100644 index 75e69af..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/node-rsrc-use.yaml +++ /dev/null @@ -1,1089 +0,0 @@ -{{- /* -Generated from 'node-rsrc-use' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled (or .Values.nodeExporter.enabled .Values.nodeExporter.forceDeployDashboards) }} -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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - node-rsrc-use.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 1, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "30s", - "rows": [ - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 2, - "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": true, - "steppedLine": false, - "targets": [ - { - "expr": "instance:node_cpu_utilisation:rate5m{job=\"node-exporter\", instance=\"$instance\", cluster=\"$cluster\"} != 0", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Utilisation", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Utilisation", - "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": null, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 3, - "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": true, - "steppedLine": false, - "targets": [ - { - "expr": "instance:node_load1_per_cpu:ratio{job=\"node-exporter\", instance=\"$instance\", cluster=\"$cluster\"} != 0", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Saturation", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Saturation (Load1 per CPU)", - "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": null, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 4, - "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": true, - "steppedLine": false, - "targets": [ - { - "expr": "instance:node_memory_utilisation:ratio{job=\"node-exporter\", instance=\"$instance\", cluster=\"$cluster\"} != 0", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Utilisation", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Utilisation", - "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": null, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 5, - "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": true, - "steppedLine": false, - "targets": [ - { - "expr": "instance:node_vmstat_pgmajfault:rate5m{job=\"node-exporter\", instance=\"$instance\", cluster=\"$cluster\"} != 0", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Major page Faults", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Saturation (Major Page Faults)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "rds", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "rds", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 6, - "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": [ - { - "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:rate5m{job=\"node-exporter\", instance=\"$instance\", cluster=\"$cluster\"} != 0", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Receive", - "refId": "A" - }, - { - "expr": "instance:node_network_transmit_bytes_excluding_lo:rate5m{job=\"node-exporter\", instance=\"$instance\", cluster=\"$cluster\"} != 0", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Transmit", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Network Utilisation (Bytes Receive/Transmit)", - "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": null, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 7, - "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": [ - { - "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:rate5m{job=\"node-exporter\", instance=\"$instance\", cluster=\"$cluster\"} != 0", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Receive", - "refId": "A" - }, - { - "expr": "instance:node_network_transmit_drop_excluding_lo:rate5m{job=\"node-exporter\", instance=\"$instance\", cluster=\"$cluster\"} != 0", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Transmit", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Network Saturation (Drops Receive/Transmit)", - "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": null, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 8, - "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": true, - "steppedLine": false, - "targets": [ - { - "expr": "instance_device:node_disk_io_time_seconds:rate5m{job=\"node-exporter\", instance=\"$instance\", cluster=\"$cluster\"} != 0", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}device{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk IO Utilisation", - "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": null, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 9, - "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": true, - "steppedLine": false, - "targets": [ - { - "expr": "instance_device:node_disk_io_time_weighted_seconds:rate5m{job=\"node-exporter\", instance=\"$instance\", cluster=\"$cluster\"} != 0", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}device{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk IO Saturation", - "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": null, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Disk IO", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 10, - "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": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(1 -\n (\n max without (mountpoint, fstype) (node_filesystem_avail_bytes{job=\"node-exporter\", fstype!=\"\", instance=\"$instance\", cluster=\"$cluster\"})\n /\n max without (mountpoint, fstype) (node_filesystem_size_bytes{job=\"node-exporter\", fstype!=\"\", instance=\"$instance\", cluster=\"$cluster\"})\n ) != 0\n)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}device{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk Space Utilisation", - "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": null, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Disk Space", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "node-exporter-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(node_time_seconds, cluster)", - "refresh": 2, - "regex": "", - "sort": 1, - "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_exporter_build_info{job=\"node-exporter\", 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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Node Exporter / USE Method / Node", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/nodes-darwin.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/nodes-darwin.yaml deleted file mode 100644 index fe11875..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/nodes-darwin.yaml +++ /dev/null @@ -1,1073 +0,0 @@ -{{- /* -Generated from 'nodes-darwin' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled (and (or .Values.nodeExporter.enabled .Values.nodeExporter.forceDeployDashboards) .Values.nodeExporter.operatingSystems.darwin.enabled) }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "nodes-darwin" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - nodes-darwin.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 1, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "30s", - "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 - sum without (mode) (rate(node_cpu_seconds_total{job=\"node-exporter\", mode=~\"idle|iowait|steal\", instance=\"$instance\"}[$__rate_interval])))\n/ ignoring(cpu) group_left\n count without (cpu, mode) (node_cpu_seconds_total{job=\"node-exporter\", mode=\"idle\", instance=\"$instance\"})\n)\n", - "format": "time_series", - "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": true, - "title": "CPU", - "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": false, - "steppedLine": false, - "targets": [ - { - "expr": "node_memory_total_bytes{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Physical Memory", - "refId": "A" - }, - { - "expr": "(\n node_memory_internal_bytes{job=\"node-exporter\", instance=\"$instance\"} -\n node_memory_purgeable_bytes{job=\"node-exporter\", instance=\"$instance\"} +\n node_memory_wired_bytes{job=\"node-exporter\", instance=\"$instance\"} +\n node_memory_compressed_bytes{job=\"node-exporter\", instance=\"$instance\"}\n)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Memory Used", - "refId": "B" - }, - { - "expr": "(\n node_memory_internal_bytes{job=\"node-exporter\", instance=\"$instance\"} -\n node_memory_purgeable_bytes{job=\"node-exporter\", instance=\"$instance\"}\n)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "App Memory", - "refId": "C" - }, - { - "expr": "node_memory_wired_bytes{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Wired Memory", - "refId": "D" - }, - { - "expr": "node_memory_compressed_bytes{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Compressed", - "refId": "E" - } - ], - "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 - } - ] - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "max": 100, - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "rgba(50, 172, 45, 0.97)" - }, - { - "color": "rgba(237, 129, 40, 0.89)", - "value": 80 - }, - { - "color": "rgba(245, 54, 54, 0.9)", - "value": 90 - } - ] - }, - "unit": "percent" - } - }, - "gridPos": { - - }, - "id": 5, - "span": 3, - "targets": [ - { - "expr": "(\n (\n avg(node_memory_internal_bytes{job=\"node-exporter\", instance=\"$instance\"}) -\n avg(node_memory_purgeable_bytes{job=\"node-exporter\", instance=\"$instance\"}) +\n avg(node_memory_wired_bytes{job=\"node-exporter\", instance=\"$instance\"}) +\n avg(node_memory_compressed_bytes{job=\"node-exporter\", instance=\"$instance\"})\n ) /\n avg(node_memory_total_bytes{job=\"node-exporter\", instance=\"$instance\"})\n)\n*\n100\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "" - } - ], - "title": "Memory Usage", - "transparent": false, - "type": "gauge" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory", - "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=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}[$__rate_interval])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}device{{`}}`}} read", - "refId": "A" - }, - { - "expr": "rate(node_disk_written_bytes_total{job=\"node-exporter\", instance=\"$instance\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}[$__rate_interval])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}device{{`}}`}} written", - "refId": "B" - }, - { - "expr": "rate(node_disk_io_time_seconds_total{job=\"node-exporter\", instance=\"$instance\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}[$__rate_interval])", - "format": "time_series", - "intervalFactor": 1, - "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": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "custom": { - - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "yellow", - "value": 0.8 - }, - { - "color": "red", - "value": 0.9 - } - ] - }, - "unit": "decbytes" - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Mounted on" - }, - "properties": [ - { - "id": "custom.width", - "value": 260 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Size" - }, - "properties": [ - { - "id": "custom.width", - "value": 93 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Used" - }, - "properties": [ - { - "id": "custom.width", - "value": 72 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Available" - }, - "properties": [ - { - "id": "custom.width", - "value": 88 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Used, %" - }, - "properties": [ - { - "id": "unit", - "value": "percentunit" - }, - { - "id": "custom.displayMode", - "value": "gradient-gauge" - }, - { - "id": "max", - "value": 1 - }, - { - "id": "min", - "value": 0 - } - ] - } - ] - }, - "gridPos": { - - }, - "id": 7, - "span": 6, - "targets": [ - { - "expr": "max by (mountpoint) (node_filesystem_size_bytes{job=\"node-exporter\", instance=\"$instance\", fstype!=\"\", mountpoint!=\"\"})\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "" - }, - { - "expr": "max by (mountpoint) (node_filesystem_avail_bytes{job=\"node-exporter\", instance=\"$instance\", fstype!=\"\", mountpoint!=\"\"})\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "" - } - ], - "title": "Disk Space Usage", - "transformations": [ - { - "id": "groupBy", - "options": { - "fields": { - "Value #A": { - "aggregations": [ - "lastNotNull" - ], - "operation": "aggregate" - }, - "Value #B": { - "aggregations": [ - "lastNotNull" - ], - "operation": "aggregate" - }, - "mountpoint": { - "aggregations": [ - - ], - "operation": "groupby" - } - } - } - }, - { - "id": "merge", - "options": { - - } - }, - { - "id": "calculateField", - "options": { - "alias": "Used", - "binary": { - "left": "Value #A (lastNotNull)", - "operator": "-", - "reducer": "sum", - "right": "Value #B (lastNotNull)" - }, - "mode": "binary", - "reduce": { - "reducer": "sum" - } - } - }, - { - "id": "calculateField", - "options": { - "alias": "Used, %", - "binary": { - "left": "Used", - "operator": "/", - "reducer": "sum", - "right": "Value #A (lastNotNull)" - }, - "mode": "binary", - "reduce": { - "reducer": "sum" - } - } - }, - { - "id": "organize", - "options": { - "excludeByName": { - - }, - "indexByName": { - - }, - "renameByName": { - "Value #A (lastNotNull)": "Size", - "Value #B (lastNotNull)": "Available", - "mountpoint": "Mounted on" - } - } - }, - { - "id": "sortBy", - "options": { - "fields": { - - }, - "sort": [ - { - "field": "Mounted on" - } - ] - } - } - ], - "transparent": false, - "type": "table" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Disk", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Network received (bits/s)", - "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\"}[$__rate_interval]) * 8", - "format": "time_series", - "intervalFactor": 1, - "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": "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", - "description": "Network transmitted (bits/s)", - "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\"}[$__rate_interval]) * 8", - "format": "time_series", - "intervalFactor": 1, - "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": "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": "Network", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "node-exporter-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "Instance", - "multi": false, - "name": "instance", - "options": [ - - ], - "query": "label_values(node_uname_info{job=\"node-exporter\", sysname=\"Darwin\"}, 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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Node Exporter / MacOS", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/nodes.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/nodes.yaml deleted file mode 100644 index 0da40a7..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/nodes.yaml +++ /dev/null @@ -1,1066 +0,0 @@ -{{- /* -Generated from 'nodes' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.defaultDashboardsEnabled (and (or .Values.nodeExporter.enabled .Values.nodeExporter.forceDeployDashboards) .Values.nodeExporter.operatingSystems.linux.enabled) }} -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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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": 1, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "30s", - "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 - sum without (mode) (rate(node_cpu_seconds_total{job=\"node-exporter\", mode=~\"idle|iowait|steal\", instance=\"$instance\"}[$__rate_interval])))\n/ ignoring(cpu) group_left\n count without (cpu, mode) (node_cpu_seconds_total{job=\"node-exporter\", mode=\"idle\", instance=\"$instance\"})\n)\n", - "format": "time_series", - "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": true, - "title": "CPU", - "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 - } - ] - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "max": 100, - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "rgba(50, 172, 45, 0.97)" - }, - { - "color": "rgba(237, 129, 40, 0.89)", - "value": 80 - }, - { - "color": "rgba(245, 54, 54, 0.9)", - "value": 90 - } - ] - }, - "unit": "percent" - } - }, - "gridPos": { - - }, - "id": 5, - "span": 3, - "targets": [ - { - "expr": "100 -\n(\n avg(node_memory_MemAvailable_bytes{job=\"node-exporter\", instance=\"$instance\"}) /\n avg(node_memory_MemTotal_bytes{job=\"node-exporter\", instance=\"$instance\"})\n* 100\n)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "" - } - ], - "title": "Memory Usage", - "transparent": false, - "type": "gauge" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory", - "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=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}[$__rate_interval])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}device{{`}}`}} read", - "refId": "A" - }, - { - "expr": "rate(node_disk_written_bytes_total{job=\"node-exporter\", instance=\"$instance\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}[$__rate_interval])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}device{{`}}`}} written", - "refId": "B" - }, - { - "expr": "rate(node_disk_io_time_seconds_total{job=\"node-exporter\", instance=\"$instance\", device=~\"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)\"}[$__rate_interval])", - "format": "time_series", - "intervalFactor": 1, - "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": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "custom": { - - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - }, - { - "color": "yellow", - "value": 0.8 - }, - { - "color": "red", - "value": 0.9 - } - ] - }, - "unit": "decbytes" - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Mounted on" - }, - "properties": [ - { - "id": "custom.width", - "value": 260 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Size" - }, - "properties": [ - { - "id": "custom.width", - "value": 93 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Used" - }, - "properties": [ - { - "id": "custom.width", - "value": 72 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Available" - }, - "properties": [ - { - "id": "custom.width", - "value": 88 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Used, %" - }, - "properties": [ - { - "id": "unit", - "value": "percentunit" - }, - { - "id": "custom.displayMode", - "value": "gradient-gauge" - }, - { - "id": "max", - "value": 1 - }, - { - "id": "min", - "value": 0 - } - ] - } - ] - }, - "gridPos": { - - }, - "id": 7, - "span": 6, - "targets": [ - { - "expr": "max by (mountpoint) (node_filesystem_size_bytes{job=\"node-exporter\", instance=\"$instance\", fstype!=\"\", mountpoint!=\"\"})\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "" - }, - { - "expr": "max by (mountpoint) (node_filesystem_avail_bytes{job=\"node-exporter\", instance=\"$instance\", fstype!=\"\", mountpoint!=\"\"})\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "" - } - ], - "title": "Disk Space Usage", - "transformations": [ - { - "id": "groupBy", - "options": { - "fields": { - "Value #A": { - "aggregations": [ - "lastNotNull" - ], - "operation": "aggregate" - }, - "Value #B": { - "aggregations": [ - "lastNotNull" - ], - "operation": "aggregate" - }, - "mountpoint": { - "aggregations": [ - - ], - "operation": "groupby" - } - } - } - }, - { - "id": "merge", - "options": { - - } - }, - { - "id": "calculateField", - "options": { - "alias": "Used", - "binary": { - "left": "Value #A (lastNotNull)", - "operator": "-", - "reducer": "sum", - "right": "Value #B (lastNotNull)" - }, - "mode": "binary", - "reduce": { - "reducer": "sum" - } - } - }, - { - "id": "calculateField", - "options": { - "alias": "Used, %", - "binary": { - "left": "Used", - "operator": "/", - "reducer": "sum", - "right": "Value #A (lastNotNull)" - }, - "mode": "binary", - "reduce": { - "reducer": "sum" - } - } - }, - { - "id": "organize", - "options": { - "excludeByName": { - - }, - "indexByName": { - - }, - "renameByName": { - "Value #A (lastNotNull)": "Size", - "Value #B (lastNotNull)": "Available", - "mountpoint": "Mounted on" - } - } - }, - { - "id": "sortBy", - "options": { - "fields": { - - }, - "sort": [ - { - "field": "Mounted on" - } - ] - } - } - ], - "transparent": false, - "type": "table" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Disk", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Network received (bits/s)", - "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\"}[$__rate_interval]) * 8", - "format": "time_series", - "intervalFactor": 1, - "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": "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", - "description": "Network transmitted (bits/s)", - "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\"}[$__rate_interval]) * 8", - "format": "time_series", - "intervalFactor": 1, - "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": "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": "Network", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "node-exporter-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "Instance", - "multi": false, - "name": "instance", - "options": [ - - ], - "query": "label_values(node_uname_info{job=\"node-exporter\", sysname!=\"Darwin\"}, 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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Node Exporter / Nodes", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/persistentvolumesusage.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/persistentvolumesusage.yaml deleted file mode 100644 index 4d1e332..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/persistentvolumesusage.yaml +++ /dev/null @@ -1,587 +0,0 @@ -{{- /* -Generated from 'persistentvolumesusage' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": true, - "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": 9, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(\n sum without(instance, node) (topk(1, (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) (topk(1, (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) (topk(1, (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": "1m", - "legend": { - "alignAsTable": true, - "rightSide": 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 - }, - "tableColumn": "", - "targets": [ - { - "expr": "max without(instance,node) (\n(\n topk(1, kubelet_volume_stats_capacity_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"})\n -\n topk(1, kubelet_volume_stats_available_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"})\n)\n/\ntopk(1, kubelet_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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": true, - "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": 9, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum without(instance, node) (topk(1, (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) (topk(1, (kubelet_volume_stats_inodes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"})))\n -\n sum without(instance, node) (topk(1, (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": "1m", - "legend": { - "alignAsTable": true, - "rightSide": 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 - }, - "tableColumn": "", - "targets": [ - { - "expr": "max without(instance,node) (\ntopk(1, kubelet_volume_stats_inodes_used{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"})\n/\ntopk(1, kubelet_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": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kubelet_volume_stats_capacity_bytes{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\"}, 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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / Persistent Volumes", - "uid": "919b92a8e8041bd567af9edab12c840c", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/pod-total.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/pod-total.yaml deleted file mode 100644 index 9a7e7d0..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(up{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\"}, cluster)", - "refresh": 2, - "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": 2, - "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": 2, - "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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / Networking / Pod", - "uid": "7a18067ce943a40ae25454675c19ff5c", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml deleted file mode 100644 index 5c11900..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml +++ /dev/null @@ -1,1674 +0,0 @@ -{{- /* -Generated from 'prometheus-remote-write' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "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": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}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": { - "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{cluster=~\"$cluster\"}, instance)", - "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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Prometheus / Remote Write", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/prometheus.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/prometheus.yaml deleted file mode 100644 index 27f7c44..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/prometheus.yaml +++ /dev/null @@ -1,1235 +0,0 @@ -{{- /* -Generated from 'prometheus' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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": "s" - }, - { - "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": 2, - "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": 2, - "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": 2, - "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": 2, - "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_body_size_limit_total[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "exceeded body size limit: {{`{{`}}job{{`}}`}}", - "legendLink": null, - "step": 10 - }, - { - "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": 2, - "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": 2, - "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": 2, - "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": 2, - "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": 2, - "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": 2, - "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": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": ".+", - "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=\"prometheus-k8s\",namespace=\"monitoring\"}, job)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": ".+", - "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{job=~\"$job\"}, 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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Prometheus / Overview", - "uid": "", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/proxy.yaml deleted file mode 100644 index 4108124..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/proxy.yaml +++ /dev/null @@ -1,1276 +0,0 @@ -{{- /* -Generated from 'proxy' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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": "1m", - "legend": { - "alignAsTable": true, - "rightSide": 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": 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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeProxy.jobName" . }}\", metrics_path=\"/metrics\"})", - {{- else }} - "expr": "sum(up{cluster=\"$cluster\", 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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\"}[$__rate_interval]))", - "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, - "interval": "1m", - "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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\"}[$__rate_interval]))", - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\"}[$__rate_interval]))", - "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, - "interval": "1m", - "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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\"}[$__rate_interval])) 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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\",code=~\"2..\"}[$__rate_interval]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "2xx", - "refId": "A" - }, - { - "expr": "sum(rate(rest_client_requests_total{cluster=\"$cluster\", job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\",code=~\"3..\"}[$__rate_interval]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "3xx", - "refId": "B" - }, - { - "expr": "sum(rate(rest_client_requests_total{cluster=\"$cluster\", job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\",code=~\"4..\"}[$__rate_interval]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "4xx", - "refId": "C" - }, - { - "expr": "sum(rate(rest_client_requests_total{cluster=\"$cluster\", job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\",code=~\"5..\"}[$__rate_interval]))", - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeProxy.jobName" . }}\",instance=~\"$instance\",verb=\"POST\"}[$__rate_interval])) 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, - "interval": "1m", - "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.kubeProxy.jobName" . }}\", instance=~\"$instance\", verb=\"GET\"}[$__rate_interval])) 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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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.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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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.kubeProxy.jobName" . }}\",instance=~\"$instance\"}[$__rate_interval])", - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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.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": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(up{job=\"{{ include "exporter.kubeProxy.jobName" . }}\"}, 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(up{job=\"{{ include "exporter.kubeProxy.jobName" . }}\", cluster=\"$cluster\", 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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / Proxy", - "uid": "632e265de029684c40b21cb76bca4f94", - "version": 0 - } -{{- end }}{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/scheduler.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/scheduler.yaml deleted file mode 100644 index ee0cf08..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/scheduler.yaml +++ /dev/null @@ -1,1118 +0,0 @@ -{{- /* -Generated from 'scheduler' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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": "1m", - "legend": { - "alignAsTable": true, - "rightSide": 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": 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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", metrics_path=\"/metrics\"})", - {{- else }} - "expr": "sum(up{cluster=\"$cluster\", 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, - "interval": "1m", - "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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\"}[$__rate_interval])) by (cluster, instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}} {{`{{`}}instance{{`}}`}} e2e", - "refId": "A" - }, - { - "expr": "sum(rate(scheduler_binding_duration_seconds_count{cluster=\"$cluster\", job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\"}[$__rate_interval])) by (cluster, instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}} {{`{{`}}instance{{`}}`}} binding", - "refId": "B" - }, - { - "expr": "sum(rate(scheduler_scheduling_algorithm_duration_seconds_count{cluster=\"$cluster\", job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\"}[$__rate_interval])) by (cluster, instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}} {{`{{`}}instance{{`}}`}} scheduling algorithm", - "refId": "C" - }, - { - "expr": "sum(rate(scheduler_volume_scheduling_duration_seconds_count{cluster=\"$cluster\", job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\"}[$__rate_interval])) by (cluster, instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}} {{`{{`}}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, - "interval": "1m", - "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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeScheduler.jobName" . }}\",instance=~\"$instance\"}[$__rate_interval])) by (cluster, instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}} {{`{{`}}instance{{`}}`}} e2e", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(scheduler_binding_duration_seconds_bucket{cluster=\"$cluster\", job=\"{{ include "exporter.kubeScheduler.jobName" . }}\",instance=~\"$instance\"}[$__rate_interval])) by (cluster, instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}} {{`{{`}}instance{{`}}`}} binding", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{cluster=\"$cluster\", job=\"{{ include "exporter.kubeScheduler.jobName" . }}\",instance=~\"$instance\"}[$__rate_interval])) by (cluster, instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}} {{`{{`}}instance{{`}}`}} scheduling algorithm", - "refId": "C" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(scheduler_volume_scheduling_duration_seconds_bucket{cluster=\"$cluster\", job=\"{{ include "exporter.kubeScheduler.jobName" . }}\",instance=~\"$instance\"}[$__rate_interval])) by (cluster, instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}} {{`{{`}}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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\",code=~\"2..\"}[$__rate_interval]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "2xx", - "refId": "A" - }, - { - "expr": "sum(rate(rest_client_requests_total{cluster=\"$cluster\", job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\",code=~\"3..\"}[$__rate_interval]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "3xx", - "refId": "B" - }, - { - "expr": "sum(rate(rest_client_requests_total{cluster=\"$cluster\", job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\",code=~\"4..\"}[$__rate_interval]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "4xx", - "refId": "C" - }, - { - "expr": "sum(rate(rest_client_requests_total{cluster=\"$cluster\", job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\",code=~\"5..\"}[$__rate_interval]))", - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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{cluster=\"$cluster\", job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\", verb=\"POST\"}[$__rate_interval])) 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, - "interval": "1m", - "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.kubeScheduler.jobName" . }}\", instance=~\"$instance\", verb=\"GET\"}[$__rate_interval])) 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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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.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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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.kubeScheduler.jobName" . }}\", instance=~\"$instance\"}[$__rate_interval])", - "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, - "interval": "1m", - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "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.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": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(up{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\"}, 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(up{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", 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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / Scheduler", - "uid": "2e6b6a3b4bddf1427b3a55aa1311c656", - "version": 0 - } -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/workload-total.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/dashboards-1.14/workload-total.yaml deleted file mode 100644 index 5aafccd..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/a8ba97a150c75be42010c75d10b720c55e182f1a/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 (or .Values.grafana.enabled .Values.grafana.forceDeployDashboards) (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .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 }}: {{ ternary $.Values.grafana.sidecar.dashboards.labelValue "1" (not (empty $.Values.grafana.sidecar.dashboards.labelValue)) | quote }} - {{- 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", 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": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": "Data Source", - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster.global.enabled }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_pod_info{job=\"kube-state-metrics\"}, cluster)", - "refresh": 2, - "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{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\"}, namespace)", - "hide": 0, - "includeAll": true, - "label": null, - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(container_network_receive_packets_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\"}, namespace)", - "refresh": 2, - "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": 2, - "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": 2, - "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": "{{ .Values.grafana.defaultDashboardsTimezone }}", - "title": "Kubernetes / Networking / Workload", - "uid": "728bf77cc1166d2f3133bf25846876cc", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/namespaces.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/grafana/namespaces.yaml deleted file mode 100644 index 39ed210..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/_prometheus-operator.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/_prometheus-operator.tpl deleted file mode 100644 index 6ae9dc7..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/_prometheus-operator.tpl +++ /dev/null @@ -1,7 +0,0 @@ -{{/* Generate basic labels for prometheus-operator */}} -{{- define "kube-prometheus-stack.prometheus-operator.labels" }} -{{- include "kube-prometheus-stack.labels" . }} -app: {{ template "kube-prometheus-stack.name" . }}-operator -app.kubernetes.io/name: {{ template "kube-prometheus-stack.name" . }}-prometheus-operator -app.kubernetes.io/component: prometheus-operator -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/_prometheus-operator-webhook.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/_prometheus-operator-webhook.tpl deleted file mode 100644 index f419caf..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/_prometheus-operator-webhook.tpl +++ /dev/null @@ -1,6 +0,0 @@ -{{/* Generate basic labels for prometheus-operator-webhook */}} -{{- define "kube-prometheus-stack.prometheus-operator-webhook.labels" }} -{{- include "kube-prometheus-stack.labels" . }} -app.kubernetes.io/name: {{ template "kube-prometheus-stack.name" . }}-prometheus-operator -app.kubernetes.io/component: prometheus-operator-webhook -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/deployment/deployment.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/deployment/deployment.yaml deleted file mode 100644 index 054eac4..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/deployment/deployment.yaml +++ /dev/null @@ -1,143 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.deployment.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "kube-prometheus-stack.operator.fullname" . }}-webhook - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-operator-webhook - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" . | nindent 4 }} -{{- if .Values.prometheusOperator.admissionWebhooks.deployment.labels }} -{{ toYaml .Values.prometheusOperator.admissionWebhooks.deployment.labels | indent 4 }} -{{- end }} -{{- if .Values.prometheusOperator.admissionWebhooks.deployment.annotations }} - annotations: -{{ toYaml .Values.prometheusOperator.admissionWebhooks.deployment.annotations | indent 4 }} -{{- end }} -spec: - replicas: {{ .Values.prometheusOperator.admissionWebhooks.deployment.replicas }} - revisionHistoryLimit: {{ .Values.prometheusOperator.admissionWebhooks.deployment.revisionHistoryLimit }} - {{- with .Values.prometheusOperator.admissionWebhooks.deployment.strategy }} - strategy: - {{- toYaml . | nindent 4 }} - {{- end }} - selector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-operator-webhook - release: {{ $.Release.Name | quote }} - template: - metadata: - labels: - app: {{ template "kube-prometheus-stack.name" . }}-operator-webhook - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" . | nindent 8 }} -{{- if .Values.prometheusOperator.admissionWebhooks.deployment.podLabels }} -{{ toYaml .Values.prometheusOperator.admissionWebhooks.deployment.podLabels | indent 8 }} -{{- end }} -{{- if .Values.prometheusOperator.admissionWebhooks.deployment.podAnnotations }} - annotations: -{{ toYaml .Values.prometheusOperator.admissionWebhooks.deployment.podAnnotations | indent 8 }} -{{- end }} - spec: - {{- if .Values.prometheusOperator.admissionWebhooks.deployment.priorityClassName }} - priorityClassName: {{ .Values.prometheusOperator.admissionWebhooks.deployment.priorityClassName }} - {{- end }} - {{- if .Values.global.imagePullSecrets }} - imagePullSecrets: - {{- include "kube-prometheus-stack.imagePullSecrets" . | indent 8 }} - {{- end }} - containers: - - name: prometheus-operator-admission-webhook - {{- $operatorRegistry := .Values.global.imageRegistry | default .Values.prometheusOperator.admissionWebhooks.deployment.image.registry -}} - {{- if .Values.prometheusOperator.admissionWebhooks.deployment.image.sha }} - image: "{{ $operatorRegistry }}/{{ .Values.prometheusOperator.admissionWebhooks.deployment.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.deployment.image.tag | default .Chart.AppVersion }}@sha256:{{ .Values.prometheusOperator.admissionWebhooks.deployment.image.sha }}" - {{- else }} - image: "{{ $operatorRegistry }}/{{ .Values.prometheusOperator.admissionWebhooks.deployment.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.deployment.image.tag | default .Chart.AppVersion }}" - {{- end }} - imagePullPolicy: "{{ .Values.prometheusOperator.admissionWebhooks.deployment.image.pullPolicy }}" - args: - {{- if .Values.prometheusOperator.admissionWebhooks.deployment.logFormat }} - - --log-format={{ .Values.prometheusOperator.admissionWebhooks.deployment.logFormat }} - {{- end }} - {{- if .Values.prometheusOperator.admissionWebhooks.deployment.logLevel }} - - --log-level={{ .Values.prometheusOperator.admissionWebhooks.deployment.logLevel }} - {{- end }} - {{- if .Values.prometheusOperator.admissionWebhooks.deployment.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.admissionWebhooks.deployment.tls.internalPort }}" - - "--web.tls-min-version={{ .Values.prometheusOperator.admissionWebhooks.deployment.tls.tlsMinVersion }}" - ports: - - containerPort: {{ .Values.prometheusOperator.admissionWebhooks.deployment.tls.internalPort }} - name: https - {{- else }} - ports: - - containerPort: 8080 - name: http - {{- end }} - {{- if .Values.prometheusOperator.admissionWebhooks.deployment.readinessProbe.enabled }} - readinessProbe: - httpGet: - path: /healthz - port: {{ .Values.prometheusOperator.admissionWebhooks.deployment.tls.enabled | ternary "https" "http" }} - scheme: {{ .Values.prometheusOperator.admissionWebhooks.deployment.tls.enabled | ternary "HTTPS" "HTTP" }} - initialDelaySeconds: {{ .Values.prometheusOperator.admissionWebhooks.deployment.readinessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.prometheusOperator.admissionWebhooks.deployment.readinessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.prometheusOperator.admissionWebhooks.deployment.readinessProbe.timeoutSeconds }} - successThreshold: {{ .Values.prometheusOperator.admissionWebhooks.deployment.readinessProbe.successThreshold }} - failureThreshold: {{ .Values.prometheusOperator.admissionWebhooks.deployment.readinessProbe.failureThreshold }} - {{- end }} - {{- if .Values.prometheusOperator.admissionWebhooks.deployment.livenessProbe.enabled }} - livenessProbe: - httpGet: - path: /healthz - port: {{ .Values.prometheusOperator.admissionWebhooks.deployment.tls.enabled | ternary "https" "http" }} - scheme: {{ .Values.prometheusOperator.admissionWebhooks.deployment.tls.enabled | ternary "HTTPS" "HTTP" }} - initialDelaySeconds: {{ .Values.prometheusOperator.admissionWebhooks.deployment.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.prometheusOperator.admissionWebhooks.deployment.livenessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.prometheusOperator.admissionWebhooks.deployment.livenessProbe.timeoutSeconds }} - successThreshold: {{ .Values.prometheusOperator.admissionWebhooks.deployment.livenessProbe.successThreshold }} - failureThreshold: {{ .Values.prometheusOperator.admissionWebhooks.deployment.livenessProbe.failureThreshold }} - {{- end }} - resources: -{{ toYaml .Values.prometheusOperator.admissionWebhooks.deployment.resources | indent 12 }} - securityContext: -{{ toYaml .Values.prometheusOperator.admissionWebhooks.deployment.containerSecurityContext | indent 12 }} -{{- if .Values.prometheusOperator.admissionWebhooks.deployment.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.admissionWebhooks.deployment.dnsConfig }} - dnsConfig: -{{ toYaml . | indent 8 }} - {{- end }} -{{- if .Values.prometheusOperator.admissionWebhooks.deployment.securityContext }} - securityContext: -{{ toYaml .Values.prometheusOperator.admissionWebhooks.deployment.securityContext | indent 8 }} -{{- end }} - serviceAccountName: {{ template "kube-prometheus-stack.operator.serviceAccountName" . }}-webhook - automountServiceAccountToken: {{ .Values.prometheusOperator.admissionWebhooks.deployment.automountServiceAccountToken }} -{{- if .Values.prometheusOperator.admissionWebhooks.deployment.hostNetwork }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet -{{- end }} - {{- with .Values.prometheusOperator.admissionWebhooks.deployment.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.prometheusOperator.admissionWebhooks.deployment.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.prometheusOperator.admissionWebhooks.deployment.tolerations }} - tolerations: -{{ toYaml . | indent 8 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/deployment/pdb.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/deployment/pdb.yaml deleted file mode 100644 index 52dd78f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/deployment/pdb.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if .Values.prometheusOperator.admissionWebhooks.deployment.podDisruptionBudget -}} -apiVersion: policy/v1{{ ternary "" "beta1" ($.Capabilities.APIVersions.Has "policy/v1/PodDisruptionBudget") }} -kind: PodDisruptionBudget -metadata: - name: {{ template "kube-prometheus-stack.operator.fullname" . }}-webhook - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" . | nindent 4 }} -spec: - selector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-operator-webhook - release: {{ $.Release.Name | quote }} -{{ toYaml .Values.prometheusOperator.admissionWebhooks.deployment.podDisruptionBudget | indent 2 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/deployment/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/deployment/service.yaml deleted file mode 100644 index b06c129..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/deployment/service.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.deployment.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-prometheus-stack.operator.fullname" . }}-webhook - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-operator-webhook - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" . | nindent 4 }} -{{- if .Values.prometheusOperator.admissionWebhooks.deployment.service.labels }} -{{ toYaml .Values.prometheusOperator.admissionWebhooks.deployment.service.labels | indent 4 }} -{{- end }} -{{- if .Values.prometheusOperator.admissionWebhooks.deployment.service.annotations }} - annotations: -{{ toYaml .Values.prometheusOperator.admissionWebhooks.deployment.service.annotations | indent 4 }} -{{- end }} -spec: -{{- if .Values.prometheusOperator.admissionWebhooks.deployment.service.clusterIP }} - clusterIP: {{ .Values.prometheusOperator.admissionWebhooks.deployment.service.clusterIP }} -{{- end }} -{{- if .Values.prometheusOperator.admissionWebhooks.deployment.service.externalIPs }} - externalIPs: -{{ toYaml .Values.prometheusOperator.admissionWebhooks.deployment.service.externalIPs | indent 4 }} -{{- end }} -{{- if .Values.prometheusOperator.admissionWebhooks.deployment.service.loadBalancerIP }} - loadBalancerIP: {{ .Values.prometheusOperator.admissionWebhooks.deployment.service.loadBalancerIP }} -{{- end }} -{{- if .Values.prometheusOperator.admissionWebhooks.deployment.service.loadBalancerSourceRanges }} - loadBalancerSourceRanges: - {{- range $cidr := .Values.prometheusOperator.admissionWebhooks.deployment.service.loadBalancerSourceRanges }} - - {{ $cidr }} - {{- end }} -{{- end }} -{{- if ne .Values.prometheusOperator.admissionWebhooks.deployment.service.type "ClusterIP" }} - externalTrafficPolicy: {{ .Values.prometheusOperator.admissionWebhooks.deployment.service.externalTrafficPolicy }} -{{- end }} - ports: - {{- if not .Values.prometheusOperator.admissionWebhooks.deployment.tls.enabled }} - - name: http - {{- if eq .Values.prometheusOperator.admissionWebhooks.deployment.service.type "NodePort" }} - nodePort: {{ .Values.prometheusOperator.admissionWebhooks.deployment.service.nodePort }} - {{- end }} - port: 8080 - targetPort: http - {{- end }} - {{- if .Values.prometheusOperator.admissionWebhooks.deployment.tls.enabled }} - - name: https - {{- if eq .Values.prometheusOperator.admissionWebhooks.deployment.service.type "NodePort"}} - nodePort: {{ .Values.prometheusOperator.admissionWebhooks.deployment.service.nodePortTls }} - {{- end }} - port: 443 - targetPort: https - {{- end }} - selector: - app: {{ template "kube-prometheus-stack.name" . }}-operator-webhook - release: {{ $.Release.Name | quote }} - type: "{{ .Values.prometheusOperator.admissionWebhooks.deployment.service.type }}" -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/deployment/serviceaccount.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/deployment/serviceaccount.yaml deleted file mode 100644 index 55511da..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/deployment/serviceaccount.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.deployment.enabled }} -apiVersion: v1 -kind: ServiceAccount -automountServiceAccountToken: {{ .Values.prometheusOperator.admissionWebhooks.deployment.serviceAccount.automountServiceAccountToken }} -metadata: - name: {{ template "kube-prometheus-stack.operator.admissionWebhooks.serviceAccountName" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-operator - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" . | indent 4 }} -{{- if .Values.global.imagePullSecrets }} -imagePullSecrets: -{{ include "kube-prometheus-stack.imagePullSecrets" . | trim | indent 2 }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/ciliumnetworkpolicy-createSecret.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/ciliumnetworkpolicy-createSecret.yaml deleted file mode 100644 index f7543b0..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/ciliumnetworkpolicy-createSecret.yaml +++ /dev/null @@ -1,36 +0,0 @@ -{{- if and .Values.prometheusOperator.networkPolicy.enabled (eq .Values.prometheusOperator.networkPolicy.flavor "cilium") }} -{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} -apiVersion: cilium.io/v2 -kind: CiliumNetworkPolicy -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 - ## Ensure this is run before the job - helm.sh/hook-weight: "-5" - {{- with .Values.prometheusOperator.admissionWebhooks.annotations }} - {{ toYaml . | nindent 4 }} - {{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission-create - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" $ | nindent 4 }} -spec: - endpointSelector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission-create - {{- if .Values.prometheusOperator.networkPolicy.matchLabels }} - {{ toYaml .Values.prometheusOperator.networkPolicy.matchLabels | nindent 6 }} - {{- else }} - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" $ | nindent 6 }} - {{- end }} - egress: - {{- if and .Values.prometheusOperator.networkPolicy.cilium .Values.prometheusOperator.networkPolicy.cilium.egress }} - {{ toYaml .Values.prometheusOperator.networkPolicy.cilium.egress | nindent 6 }} - {{- else }} - - toEntities: - - kube-apiserver - {{- end }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/ciliumnetworkpolicy-patchWebhook.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/ciliumnetworkpolicy-patchWebhook.yaml deleted file mode 100644 index 4e3b0d9..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/ciliumnetworkpolicy-patchWebhook.yaml +++ /dev/null @@ -1,36 +0,0 @@ -{{- if and .Values.prometheusOperator.networkPolicy.enabled (eq .Values.prometheusOperator.networkPolicy.flavor "cilium") }} -{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} -apiVersion: cilium.io/v2 -kind: CiliumNetworkPolicy -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 - ## Ensure this is run before the job - helm.sh/hook-weight: "-5" - {{- with .Values.prometheusOperator.admissionWebhooks.patch.annotations }} - {{ toYaml . | nindent 4 }} - {{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission-patch - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" $ | nindent 4 }} -spec: - endpointSelector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission-patch - {{- if .Values.prometheusOperator.networkPolicy.matchLabels }} - {{ toYaml .Values.prometheusOperator.networkPolicy.matchLabels | nindent 6 }} - {{- else }} - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" $ | nindent 6 }} - {{- end }} - egress: - {{- if and .Values.prometheusOperator.networkPolicy.cilium .Values.prometheusOperator.networkPolicy.cilium.egress }} - {{ toYaml .Values.prometheusOperator.networkPolicy.cilium.egress | nindent 6 }} - {{- else }} - - toEntities: - - kube-apiserver - {{- end }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml deleted file mode 100644 index b81257c..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .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.prometheus-operator-webhook.labels" $ | nindent 4 }} -rules: - - apiGroups: - - admissionregistration.k8s.io - resources: - - validatingwebhookconfigurations - - mutatingwebhookconfigurations - verbs: - - get - - update -{{- if and (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") (or .Values.global.cattle.psp.enabled .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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml deleted file mode 100644 index 4cf1335..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .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.prometheus-operator-webhook.labels" $ | nindent 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml deleted file mode 100644 index baed83d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml +++ /dev/null @@ -1,73 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .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 -{{- with .Values.prometheusOperator.admissionWebhooks.annotations }} -{{ toYaml . | indent 4 }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission-create - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" $ | nindent 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.prometheus-operator-webhook.labels" $ | nindent 8 }} - spec: - {{- if .Values.prometheusOperator.admissionWebhooks.patch.priorityClassName }} - priorityClassName: {{ .Values.prometheusOperator.admissionWebhooks.patch.priorityClassName }} - {{- end }} - containers: - - name: create - {{- $registry := include "monitoring_registry" . | default .Values.prometheusOperator.admissionWebhooks.patch.image.registry -}} - {{- if .Values.prometheusOperator.admissionWebhooks.patch.image.sha }} - image: {{ $registry }}/{{ .Values.prometheusOperator.admissionWebhooks.patch.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.tag }}@sha256:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.sha }} - {{- else }} - image: {{ $registry }}/{{ .Values.prometheusOperator.admissionWebhooks.patch.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.tag }} - {{- end }} - imagePullPolicy: {{ .Values.prometheusOperator.admissionWebhooks.patch.image.pullPolicy }} - args: - - create - - --host={{- include "kube-prometheus-stack.operator.admission-webhook.dnsNames" . | replace "\n" "," }} - - --namespace={{ template "kube-prometheus-stack.namespace" . }} - - --secret-name={{ template "kube-prometheus-stack.fullname" . }}-admission - {{- with .Values.prometheusOperator.admissionWebhooks.createSecretJob }} - securityContext: - {{ toYaml .securityContext | nindent 12 }} - {{- end }} - 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 }} -{{- if .Values.prometheusOperator.admissionWebhooks.patch.securityContext }} - securityContext: -{{ toYaml .Values.prometheusOperator.admissionWebhooks.patch.securityContext | indent 8 }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml deleted file mode 100644 index 5639cc9..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml +++ /dev/null @@ -1,74 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .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 -{{- with .Values.prometheusOperator.admissionWebhooks.patch.annotations }} -{{ toYaml . | indent 4 }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission-patch - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" $ | nindent 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.prometheus-operator-webhook.labels" $ | nindent 8 }} - spec: - {{- if .Values.prometheusOperator.admissionWebhooks.patch.priorityClassName }} - priorityClassName: {{ .Values.prometheusOperator.admissionWebhooks.patch.priorityClassName }} - {{- end }} - containers: - - name: patch - {{- $registry := include "monitoring_registry" . | default .Values.prometheusOperator.admissionWebhooks.patch.image.registry -}} - {{- if .Values.prometheusOperator.admissionWebhooks.patch.image.sha }} - image: {{ $registry }}/{{ .Values.prometheusOperator.admissionWebhooks.patch.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.tag }}@sha256:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.sha }} - {{- else }} - image: {{ $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 }} - {{- with .Values.prometheusOperator.admissionWebhooks.patchWebhookJob }} - securityContext: - {{ toYaml .securityContext | nindent 12 }} - {{- end }} - 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 }} -{{- if .Values.prometheusOperator.admissionWebhooks.patch.securityContext }} - securityContext: -{{ toYaml .Values.prometheusOperator.admissionWebhooks.patch.securityContext | indent 8 }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/networkpolicy-createSecret.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/networkpolicy-createSecret.yaml deleted file mode 100644 index 864deb5..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/networkpolicy-createSecret.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if and .Values.prometheusOperator.networkPolicy.enabled (eq .Values.prometheusOperator.networkPolicy.flavor "kubernetes") }} -{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -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 - ## Ensure this is run before the job - "helm.sh/hook-weight": "-5" - {{- with .Values.prometheusOperator.admissionWebhooks.annotations }} - {{ toYaml . | nindent 4 }} - {{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission-create - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" $ | nindent 4 }} -spec: - podSelector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission-create - {{- if .Values.prometheusOperator.networkPolicy.matchLabels }} - {{ toYaml .Values.prometheusOperator.networkPolicy.matchLabels | nindent 6 }} - {{- else }} - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" $ | nindent 6 }} - {{- end }} - egress: - - {} - policyTypes: - - Egress -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/networkpolicy-patchWebhook.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/networkpolicy-patchWebhook.yaml deleted file mode 100644 index 076c467..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/networkpolicy-patchWebhook.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if and .Values.prometheusOperator.networkPolicy.enabled (eq .Values.prometheusOperator.networkPolicy.flavor "kubernetes") }} -{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -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 - ## Ensure this is run before the job - "helm.sh/hook-weight": "-5" - {{- with .Values.prometheusOperator.admissionWebhooks.patch.annotations }} - {{ toYaml . | nindent 4 }} - {{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission-patch - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" $ | nindent 4 }} -spec: - podSelector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission-patch - {{- if .Values.prometheusOperator.networkPolicy.matchLabels }} - {{ toYaml .Values.prometheusOperator.networkPolicy.matchLabels | nindent 6 }} - {{- else }} - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" $ | nindent 6 }} - {{- end }} - egress: - - {} - policyTypes: - - Egress -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml deleted file mode 100644 index 0113b6a..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml +++ /dev/null @@ -1,47 +0,0 @@ -{{- if and (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") .Values.prometheusOperator.enabled .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled (or .Values.global.cattle.psp.enabled (and .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 -{{- if .Values.global.rbac.pspAnnotations }} -{{ toYaml .Values.global.rbac.pspAnnotations | indent 4 }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-admission - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" . | nindent 4 }} -spec: - privileged: false - # 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: - # Allow adding the root group. - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - # Allow adding the root group. - - min: 0 - max: 65535 - readOnlyRootFilesystem: false -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml deleted file mode 100644 index f15abf4..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .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.prometheus-operator-webhook.labels" $ | nindent 4 }} -rules: - - apiGroups: - - "" - resources: - - secrets - verbs: - - get - - create -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml deleted file mode 100644 index 30bde92..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .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.prometheus-operator-webhook.labels" $ | nindent 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml deleted file mode 100644 index 0259454..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .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.prometheus-operator-webhook.labels" $ | nindent 4 }} -{{- if .Values.global.imagePullSecrets }} -imagePullSecrets: -{{ include "kube-prometheus-stack.imagePullSecrets" . | trim | indent 2 }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml deleted file mode 100644 index da01f3b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .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-admission" (include "kube-prometheus-stack.namespace" .) (include "kube-prometheus-stack.fullname" .) | quote }} - cert-manager.io/inject-ca-from: {{ printf "%s/%s-admission" (include "kube-prometheus-stack.namespace" .) (include "kube-prometheus-stack.fullname" .) | quote }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" $ | nindent 4 }} -webhooks: - - name: prometheusrulemutate.monitoring.coreos.com - {{- if eq .Values.prometheusOperator.admissionWebhooks.failurePolicy "IgnoreOnInstallOnly" }} - failurePolicy: {{ .Release.IsInstall | ternary "Ignore" "Fail" }} - {{- else if .Values.prometheusOperator.admissionWebhooks.failurePolicy }} - failurePolicy: {{ .Values.prometheusOperator.admissionWebhooks.failurePolicy }} - {{- else if .Values.prometheusOperator.admissionWebhooks.patch.enabled }} - failurePolicy: Ignore - {{- else }} - failurePolicy: Fail - {{- 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" $ }}{{ if .Values.prometheusOperator.admissionWebhooks.deployment.enabled }}-webhook{{ end }} - 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 }} - timeoutSeconds: {{ .Values.prometheusOperator.admissionWebhooks.timeoutSeconds }} - admissionReviewVersions: ["v1", "v1beta1"] - sideEffects: None - {{- if or .Values.prometheusOperator.denyNamespaces .Values.prometheusOperator.namespaces .Values.prometheusOperator.admissionWebhooks.namespaceSelector }} - namespaceSelector: - {{- with (omit .Values.prometheusOperator.admissionWebhooks.namespaceSelector "matchExpressions") }} - {{- toYaml . | nindent 6 }} - {{- end }} - {{- if or .Values.prometheusOperator.denyNamespaces .Values.prometheusOperator.namespaces .Values.prometheusOperator.admissionWebhooks.namespaceSelector.matchExpressions }} - matchExpressions: - {{- with (.Values.prometheusOperator.admissionWebhooks.namespaceSelector.matchExpressions) }} - {{- toYaml . | nindent 6 }} - {{- end }} - {{- if .Values.prometheusOperator.denyNamespaces }} - - key: kubernetes.io/metadata.name - operator: NotIn - values: - {{- range $namespace := mustUniq .Values.prometheusOperator.denyNamespaces }} - - {{ $namespace }} - {{- end }} - {{- else if and .Values.prometheusOperator.namespaces .Values.prometheusOperator.namespaces.additional }} - - key: kubernetes.io/metadata.name - operator: In - values: - {{- if and .Values.prometheusOperator.namespaces.releaseNamespace (default .Values.prometheusOperator.namespaces.releaseNamespace true) }} - {{- $namespace := printf "%s" (include "kube-prometheus-stack.namespace" .) }} - - {{ $namespace }} - {{- end }} - {{- range $namespace := mustUniq .Values.prometheusOperator.namespaces.additional }} - - {{ $namespace }} - {{- end }} - {{- end }} - {{- end }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml deleted file mode 100644 index 4827871..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .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-admission" (include "kube-prometheus-stack.namespace" .) (include "kube-prometheus-stack.fullname" .) | quote }} - cert-manager.io/inject-ca-from: {{ printf "%s/%s-admission" (include "kube-prometheus-stack.namespace" .) (include "kube-prometheus-stack.fullname" .) | quote }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission - {{- include "kube-prometheus-stack.prometheus-operator-webhook.labels" $ | nindent 4 }} -webhooks: - - name: prometheusrulemutate.monitoring.coreos.com - {{- if eq .Values.prometheusOperator.admissionWebhooks.failurePolicy "IgnoreOnInstallOnly" }} - failurePolicy: {{ .Release.IsInstall | ternary "Ignore" "Fail" }} - {{- else if .Values.prometheusOperator.admissionWebhooks.failurePolicy }} - failurePolicy: {{ .Values.prometheusOperator.admissionWebhooks.failurePolicy }} - {{- else if .Values.prometheusOperator.admissionWebhooks.patch.enabled }} - failurePolicy: Ignore - {{- else }} - failurePolicy: Fail - {{- 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" $ }}{{ if .Values.prometheusOperator.admissionWebhooks.deployment.enabled }}-webhook{{ end }} - 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 }} - timeoutSeconds: {{ .Values.prometheusOperator.admissionWebhooks.timeoutSeconds }} - admissionReviewVersions: ["v1", "v1beta1"] - sideEffects: None - {{- if or .Values.prometheusOperator.denyNamespaces .Values.prometheusOperator.namespaces .Values.prometheusOperator.admissionWebhooks.namespaceSelector }} - namespaceSelector: - {{- with (omit .Values.prometheusOperator.admissionWebhooks.namespaceSelector "matchExpressions") }} - {{- toYaml . | nindent 6 }} - {{- end }} - {{- if or .Values.prometheusOperator.denyNamespaces .Values.prometheusOperator.namespaces .Values.prometheusOperator.admissionWebhooks.namespaceSelector.matchExpressions }} - matchExpressions: - {{- with (.Values.prometheusOperator.admissionWebhooks.namespaceSelector.matchExpressions) }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- if .Values.prometheusOperator.denyNamespaces }} - - key: kubernetes.io/metadata.name - operator: NotIn - values: - {{- range $namespace := mustUniq .Values.prometheusOperator.denyNamespaces }} - - {{ $namespace }} - {{- end }} - {{- else if and .Values.prometheusOperator.namespaces .Values.prometheusOperator.namespaces.additional }} - - key: kubernetes.io/metadata.name - operator: In - values: - {{- if and .Values.prometheusOperator.namespaces.releaseNamespace (default .Values.prometheusOperator.namespaces.releaseNamespace true) }} - {{- $namespace := printf "%s" (include "kube-prometheus-stack.namespace" .) }} - - {{ $namespace }} - {{- end }} - {{- range $namespace := mustUniq .Values.prometheusOperator.namespaces.additional }} - - {{ $namespace }} - {{- end }} - {{- end }} - {{- end }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/certmanager.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/certmanager.yaml deleted file mode 100644 index cb27e49..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/certmanager.yaml +++ /dev/null @@ -1,55 +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: {{ .Values.prometheusOperator.admissionWebhooks.certManager.rootCert.duration | default "43800h0m0s" | quote }} - 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 server 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: {{ .Values.prometheusOperator.admissionWebhooks.certManager.admissionCert.duration | default "8760h0m0s" | quote }} - 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: - {{- include "kube-prometheus-stack.operator.admission-webhook.dnsNames" . | splitList "\n" | toYaml | nindent 4 }} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/ciliumnetworkpolicy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/ciliumnetworkpolicy.yaml deleted file mode 100644 index 07e2e99..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/ciliumnetworkpolicy.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if and .Values.prometheusOperator.networkPolicy.enabled (eq .Values.prometheusOperator.networkPolicy.flavor "cilium") }} -apiVersion: cilium.io/v2 -kind: CiliumNetworkPolicy -metadata: - name: {{ template "kube-prometheus-stack.operator.fullname" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - {{- include "kube-prometheus-stack.prometheus-operator.labels" . | nindent 4 }} -spec: - endpointSelector: - matchLabels: - {{- if .Values.prometheusOperator.networkPolicy.matchLabels }} - app: {{ template "kube-prometheus-stack.name" . }}-operator - {{ toYaml .Values.prometheusOperator.networkPolicy.matchLabels | nindent 6 }} - {{- else }} - {{- include "kube-prometheus-stack.prometheus-operator.labels" $ | nindent 6 }} - {{- end }} - egress: - {{- if and .Values.prometheusOperator.networkPolicy.cilium .Values.prometheusOperator.networkPolicy.cilium.egress }} - {{ toYaml .Values.prometheusOperator.networkPolicy.cilium.egress | nindent 6 }} - {{- else }} - - toEntities: - - kube-apiserver - {{- end }} - ingress: - - toPorts: - - ports: - {{- if .Values.prometheusOperator.tls.enabled }} - - port: {{ .Values.prometheusOperator.tls.internalPort | quote }} - {{- else }} - - port: "8080" - {{- end }} - protocol: "TCP" - {{- if not .Values.prometheusOperator.tls.enabled }} - rules: - http: - - method: "GET" - path: "/metrics" - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/clusterrole.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/clusterrole.yaml deleted file mode 100644 index fd11b69..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/clusterrole.yaml +++ /dev/null @@ -1,109 +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.operator.fullname" . }} - labels: - {{- include "kube-prometheus-stack.prometheus-operator.labels" . | nindent 4 }} -rules: -- apiGroups: - - monitoring.coreos.com - resources: - - alertmanagers - - alertmanagers/finalizers - - alertmanagers/status - - alertmanagerconfigs - - prometheuses - - prometheuses/finalizers - - prometheuses/status - - prometheusagents - - prometheusagents/finalizers - - prometheusagents/status - - thanosrulers - - thanosrulers/finalizers - - thanosrulers/status - - scrapeconfigs - - 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: - - "" - resources: - - events - verbs: - - patch - - create -- apiGroups: - - networking.k8s.io - resources: - - ingresses - verbs: - - get - - list - - watch -- apiGroups: - - storage.k8s.io - resources: - - storageclasses - verbs: - - get -{{- if .Capabilities.APIVersions.Has "discovery.k8s.io/v1/EndpointSlice" }} -- apiGroups: - - discovery.k8s.io - resources: - - endpointslices - verbs: - - get - - list - - watch -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/clusterrolebinding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/clusterrolebinding.yaml deleted file mode 100644 index ad9e3ef..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/clusterrolebinding.yaml +++ /dev/null @@ -1,16 +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.operator.fullname" . }} - labels: - {{- include "kube-prometheus-stack.prometheus-operator.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "kube-prometheus-stack.operator.fullname" . }} -subjects: -- kind: ServiceAccount - name: {{ template "kube-prometheus-stack.operator.serviceAccountName" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/deployment.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/deployment.yaml deleted file mode 100644 index 8a01b29..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/deployment.yaml +++ /dev/null @@ -1,204 +0,0 @@ -{{- $namespace := printf "%s" (include "kube-prometheus-stack.namespace" .) }} -{{- $defaultKubeletSvcName := printf "%s-kubelet" (include "kube-prometheus-stack.fullname" .) }} -{{- if .Values.prometheusOperator.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "kube-prometheus-stack.operator.fullname" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - {{- include "kube-prometheus-stack.prometheus-operator.labels" . | nindent 4 }} -{{- if .Values.prometheusOperator.labels }} -{{ toYaml .Values.prometheusOperator.labels | indent 4 }} -{{- end }} -{{- if .Values.prometheusOperator.annotations }} - annotations: -{{ toYaml .Values.prometheusOperator.annotations | indent 4 }} -{{- end }} -spec: - replicas: 1 - revisionHistoryLimit: {{ .Values.prometheusOperator.revisionHistoryLimit }} - selector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-operator - release: {{ $.Release.Name | quote }} - {{- with .Values.prometheusOperator.strategy }} - strategy: - {{- toYaml . | nindent 4 }} - {{- end }} - template: - metadata: - labels: - {{- include "kube-prometheus-stack.prometheus-operator.labels" . | nindent 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 }} - {{- if .Values.global.imagePullSecrets }} - imagePullSecrets: - {{- include "kube-prometheus-stack.imagePullSecrets" . | indent 8 }} - {{- end }} - containers: - - name: {{ template "kube-prometheus-stack.name" . }} - {{- $base_registry := (include "monitoring_registry" .) }} - {{- $configReloaderRegistry := $base_registry | default .Values.prometheusOperator.prometheusConfigReloader.image.registry -}} - {{- $operatorRegistry := $base_registry | default .Values.prometheusOperator.image.registry -}} - {{- $thanosRegistry := $base_registry | default .Values.prometheusOperator.thanosImage.registry -}} - {{- if .Values.prometheusOperator.image.sha }} - image: "{{ $operatorRegistry }}/{{ .Values.prometheusOperator.image.repository }}:{{ .Values.prometheusOperator.image.tag | default .Chart.AppVersion }}@sha256:{{ .Values.prometheusOperator.image.sha }}" - {{- else }} - image: "{{ $operatorRegistry }}/{{ .Values.prometheusOperator.image.repository }}:{{ .Values.prometheusOperator.image.tag | default .Chart.AppVersion }}" - {{- end }} - imagePullPolicy: "{{ .Values.prometheusOperator.image.pullPolicy }}" - args: - {{- if .Values.prometheusOperator.kubeletService.enabled }} - - --kubelet-service={{ .Values.prometheusOperator.kubeletService.namespace }}/{{ default $defaultKubeletSvcName .Values.prometheusOperator.kubeletService.name }} - {{- 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={{ tpl (.Values.prometheusOperator.denyNamespaces | join ",") $ }} - {{- end }} - {{- with $.Values.prometheusOperator.namespaces }} - {{- $namespaces := list }} - {{- if .releaseNamespace }} - {{- $namespaces = append $namespaces $namespace }} - {{- end }} - {{- if .additional }} - {{- range $ns := .additional }} - {{- $namespaces = append $namespaces (tpl $ns $) }} - {{- end }} - {{- end }} - - --namespaces={{ $namespaces | mustUniq | join "," }} - {{- end }} - - --localhost=127.0.0.1 - {{- if .Values.prometheusOperator.prometheusDefaultBaseImage }} - - --prometheus-default-base-image={{ $base_registry | default .Values.prometheusOperator.prometheusDefaultBaseImageRegistry }}/{{ .Values.prometheusOperator.prometheusDefaultBaseImage }} - {{- end }} - {{- if .Values.prometheusOperator.alertmanagerDefaultBaseImage }} - - --alertmanager-default-base-image={{ $base_registry | default .Values.prometheusOperator.alertmanagerDefaultBaseImageRegistry }}/{{ .Values.prometheusOperator.alertmanagerDefaultBaseImage }} - {{- end }} - {{- if .Values.prometheusOperator.prometheusConfigReloader.image.sha }} - - --prometheus-config-reloader={{ $configReloaderRegistry }}/{{ .Values.prometheusOperator.prometheusConfigReloader.image.repository }}:{{ .Values.prometheusOperator.prometheusConfigReloader.image.tag | default .Chart.AppVersion }}@sha256:{{ .Values.prometheusOperator.prometheusConfigReloader.image.sha }} - {{- else }} - - --prometheus-config-reloader={{ $configReloaderRegistry }}/{{ .Values.prometheusOperator.prometheusConfigReloader.image.repository }}:{{ .Values.prometheusOperator.prometheusConfigReloader.image.tag | default .Chart.AppVersion }} - {{- end }} - - --config-reloader-cpu-request={{ (((.Values.prometheusOperator.prometheusConfigReloader.resources).requests).cpu) | default 0 }} - - --config-reloader-cpu-limit={{ (((.Values.prometheusOperator.prometheusConfigReloader.resources).limits).cpu) | default 0 }} - - --config-reloader-memory-request={{ (((.Values.prometheusOperator.prometheusConfigReloader.resources).requests).memory) | default 0 }} - - --config-reloader-memory-limit={{ (((.Values.prometheusOperator.prometheusConfigReloader.resources).limits).memory) | default 0 }} - {{- if .Values.prometheusOperator.prometheusConfigReloader.enableProbe }} - - --enable-config-reloader-probes=true - {{- end }} - {{- if .Values.prometheusOperator.alertmanagerInstanceNamespaces }} - - --alertmanager-instance-namespaces={{ .Values.prometheusOperator.alertmanagerInstanceNamespaces | join "," }} - {{- end }} - {{- if .Values.prometheusOperator.alertmanagerInstanceSelector }} - - --alertmanager-instance-selector={{ .Values.prometheusOperator.alertmanagerInstanceSelector }} - {{- end }} - {{- if .Values.prometheusOperator.alertmanagerConfigNamespaces }} - - --alertmanager-config-namespaces={{ .Values.prometheusOperator.alertmanagerConfigNamespaces | join "," }} - {{- end }} - {{- if .Values.prometheusOperator.prometheusInstanceNamespaces }} - - --prometheus-instance-namespaces={{ .Values.prometheusOperator.prometheusInstanceNamespaces | join "," }} - {{- end }} - {{- if .Values.prometheusOperator.prometheusInstanceSelector }} - - --prometheus-instance-selector={{ .Values.prometheusOperator.prometheusInstanceSelector }} - {{- end }} - {{- if .Values.prometheusOperator.thanosImage.sha }} - - --thanos-default-base-image={{ $thanosRegistry }}/{{ .Values.prometheusOperator.thanosImage.repository }}:{{ .Values.prometheusOperator.thanosImage.tag }}@sha256:{{ .Values.prometheusOperator.thanosImage.sha }} - {{- else }} - - --thanos-default-base-image={{ $thanosRegistry }}/{{ .Values.prometheusOperator.thanosImage.repository }}:{{ .Values.prometheusOperator.thanosImage.tag }} - {{- end }} - {{- if .Values.prometheusOperator.thanosRulerInstanceNamespaces }} - - --thanos-ruler-instance-namespaces={{ .Values.prometheusOperator.thanosRulerInstanceNamespaces | join "," }} - {{- end }} - {{- if .Values.prometheusOperator.thanosRulerInstanceSelector }} - - --thanos-ruler-instance-selector={{ .Values.prometheusOperator.thanosRulerInstanceSelector }} - {{- end }} - {{- if .Values.prometheusOperator.secretFieldSelector }} - - --secret-field-selector={{ tpl (.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 }} - env: - {{- range $key, $value := .Values.prometheusOperator.env }} - - name: {{ $key }} - value: {{ $value | quote }} - {{- end }} - resources: -{{ toYaml .Values.prometheusOperator.resources | indent 12 }} - securityContext: -{{ toYaml .Values.prometheusOperator.containerSecurityContext | indent 12 }} - volumeMounts: - {{- if .Values.prometheusOperator.tls.enabled }} - - name: tls-secret - mountPath: /cert - readOnly: true - {{- end }} - {{- with .Values.prometheusOperator.extraVolumeMounts }} - {{- toYaml . | nindent 12 }} - {{- end }} - volumes: - {{- if .Values.prometheusOperator.tls.enabled }} - - name: tls-secret - secret: - defaultMode: 420 - secretName: {{ template "kube-prometheus-stack.fullname" . }}-admission - {{- end }} - {{- with .Values.prometheusOperator.extraVolumes }} - {{- toYaml . | nindent 8 }} - {{- 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" . }} - automountServiceAccountToken: {{ .Values.prometheusOperator.automountServiceAccountToken }} -{{- 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/networkpolicy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/networkpolicy.yaml deleted file mode 100644 index cfd5b0b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/networkpolicy.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- if and .Values.prometheusOperator.networkPolicy.enabled (eq .Values.prometheusOperator.networkPolicy.flavor "kubernetes") }} -apiVersion: {{ template "kube-prometheus-stack.prometheus.networkPolicy.apiVersion" . }} -kind: NetworkPolicy -metadata: - name: {{ template "kube-prometheus-stack.operator.fullname" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - {{- include "kube-prometheus-stack.prometheus-operator.labels" . | nindent 4 }} -spec: - egress: - - {} - ingress: - - ports: - {{- if .Values.prometheusOperator.tls.enabled }} - - port: {{ .Values.prometheusOperator.tls.internalPort }} - {{- else }} - - port: 8080 - {{- end }} - policyTypes: - - Egress - - Ingress - podSelector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-operator - release: {{ $.Release.Name | quote }} - {{- if .Values.prometheusOperator.networkPolicy.matchLabels }} - {{ toYaml .Values.prometheusOperator.networkPolicy.matchLabels | nindent 6 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/psp-clusterrole.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/psp-clusterrole.yaml deleted file mode 100644 index 61bc3d9..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/psp-clusterrole.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy" }} -{{- if and .Values.prometheusOperator.enabled (or .Values.global.cattle.psp.enabled (and .Values.global.rbac.create .Values.global.rbac.pspEnabled)) }} -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{ template "kube-prometheus-stack.operator.fullname" . }}-psp - labels: - {{- include "kube-prometheus-stack.prometheus-operator.labels" . | nindent 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.operator.fullname" . }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/psp-clusterrolebinding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/psp-clusterrolebinding.yaml deleted file mode 100644 index 40e0fc5..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/psp-clusterrolebinding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled (or .Values.global.cattle.psp.enabled (and .Values.global.rbac.create .Values.global.rbac.pspEnabled)) }} -{{- if .Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy" }} -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{ template "kube-prometheus-stack.operator.fullname" . }}-psp - labels: - {{- include "kube-prometheus-stack.prometheus-operator.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "kube-prometheus-stack.operator.fullname" . }}-psp -subjects: - - kind: ServiceAccount - name: {{ template "kube-prometheus-stack.operator.serviceAccountName" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/psp.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/psp.yaml deleted file mode 100644 index 28a9075..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/psp.yaml +++ /dev/null @@ -1,46 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled (or .Values.global.cattle.psp.enabled (and .Values.global.rbac.create .Values.global.rbac.pspEnabled)) }} -{{- if .Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy" }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "kube-prometheus-stack.operator.fullname" . }} - labels: - {{- include "kube-prometheus-stack.prometheus-operator.labels" . | nindent 4 }} -{{- if .Values.global.rbac.pspAnnotations }} - annotations: -{{ toYaml .Values.global.rbac.pspAnnotations | indent 4 }} -{{- end }} -spec: - privileged: false - # 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: - # Allow adding the root group. - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - # Allow adding the root group. - - min: 0 - max: 65535 - readOnlyRootFilesystem: false -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/service.yaml deleted file mode 100644 index d45ab22..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/service.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- if .Values.prometheusOperator.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-prometheus-stack.operator.fullname" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - {{- include "kube-prometheus-stack.prometheus-operator.labels" . | nindent 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 }} -{{- if ne .Values.prometheusOperator.service.type "ClusterIP" }} - externalTrafficPolicy: {{ .Values.prometheusOperator.service.externalTrafficPolicy }} -{{- 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/serviceaccount.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/serviceaccount.yaml deleted file mode 100644 index 4f84974..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/serviceaccount.yaml +++ /dev/null @@ -1,14 +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: - {{- include "kube-prometheus-stack.prometheus-operator.labels" . | nindent 4 }} -automountServiceAccountToken: {{ .Values.prometheusOperator.serviceAccount.automountServiceAccountToken }} -{{- if .Values.global.imagePullSecrets }} -imagePullSecrets: -{{ include "kube-prometheus-stack.imagePullSecrets" . | trim | indent 2 }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/servicemonitor.yaml deleted file mode 100644 index cbe79e1..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/servicemonitor.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.serviceMonitor.selfMonitor }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.operator.fullname" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - {{- include "kube-prometheus-stack.prometheus-operator.labels" . | nindent 4 }} -{{- with .Values.prometheusOperator.serviceMonitor.additionalLabels }} -{{ toYaml . | indent 4 }} -{{- end }} -spec: - {{- include "servicemonitor.scrapeLimits" .Values.prometheusOperator.serviceMonitor | nindent 2 }} - 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 }} - metricRelabelings: - {{- if .Values.prometheusOperator.serviceMonitor.metricRelabelings }} - {{ tpl (toYaml .Values.prometheusOperator.serviceMonitor.metricRelabelings | indent 6) . }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName}} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/verticalpodautoscaler.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/verticalpodautoscaler.yaml deleted file mode 100644 index f225d16..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus-operator/verticalpodautoscaler.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if and (.Capabilities.APIVersions.Has "autoscaling.k8s.io/v1") (.Values.prometheusOperator.verticalPodAutoscaler.enabled) }} -apiVersion: autoscaling.k8s.io/v1 -kind: VerticalPodAutoscaler -metadata: - name: {{ template "kube-prometheus-stack.operator.fullname" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - {{- include "kube-prometheus-stack.prometheus-operator.labels" . | nindent 4 }} -spec: - {{- with .Values.prometheusOperator.verticalPodAutoscaler.recommenders }} - recommenders: - {{- toYaml . | nindent 4 }} - {{- end }} - resourcePolicy: - containerPolicies: - - containerName: {{ template "kube-prometheus-stack.name" . }} - {{- with .Values.prometheusOperator.verticalPodAutoscaler.controlledResources }} - controlledResources: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- if .Values.prometheusOperator.verticalPodAutoscaler.controlledValues }} - controlledValues: {{ .Values.prometheusOperator.verticalPodAutoscaler.controlledValues }} - {{- end }} - {{- if .Values.prometheusOperator.verticalPodAutoscaler.maxAllowed }} - maxAllowed: - {{- toYaml .Values.prometheusOperator.verticalPodAutoscaler.maxAllowed | nindent 8 }} - {{- end }} - {{- if .Values.prometheusOperator.verticalPodAutoscaler.minAllowed }} - minAllowed: - {{- toYaml .Values.prometheusOperator.verticalPodAutoscaler.minAllowed | nindent 8 }} - {{- end }} - targetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ template "kube-prometheus-stack.operator.fullname" . }} - {{- with .Values.prometheusOperator.verticalPodAutoscaler.updatePolicy }} - updatePolicy: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/_rules.tpl b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/_rules.tpl deleted file mode 100644 index 4a8213d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/_rules.tpl +++ /dev/null @@ -1,44 +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" - - "config-reloaders" - - "etcd" - - "general.rules" - - "k8s.rules.container-cpu-usage-seconds-total" - - "k8s.rules.container-memory-cache" - - "k8s.rules.container-memory-rss" - - "k8s.rules.container-memory-swap" - - "k8s.rules.container-memory-working-set-bytes" - - "k8s.rules.container-resource" - - "k8s.rules.pod-owner" - - "kube-apiserver-availability.rules" - - "kube-apiserver-burnrate.rules" - - "kube-apiserver-histogram.rules" - - "kube-apiserver-slos" - - "kube-prometheus-general.rules" - - "kube-prometheus-node-recording.rules" - - "kube-scheduler.rules" - - "kube-state-metrics" - - "kubelet.rules" - - "kubernetes-apps" - - "kubernetes-resources" - - "kubernetes-storage" - - "kubernetes-system" - - "kubernetes-system-kube-proxy" - - "kubernetes-system-apiserver" - - "kubernetes-system-kubelet" - - "kubernetes-system-controller-manager" - - "kubernetes-system-scheduler" - - "node-exporter.rules" - - "node-exporter" - - "node.rules" - - "node-network" - - "prometheus-operator" - - "prometheus" - - "windows.node.rules" - - "windows.pod.rules" -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/additionalAlertRelabelConfigs.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/additionalAlertRelabelConfigs.yaml deleted file mode 100644 index bff9309..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/additionalAlertmanagerConfigs.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/additionalAlertmanagerConfigs.yaml deleted file mode 100644 index 2fe8fdb..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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: {{ tpl (toYaml .Values.prometheus.prometheusSpec.additionalAlertManagerConfigs) . | b64enc | quote }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/additionalPrometheusRules.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/additionalPrometheusRules.yaml deleted file mode 100644 index cb4aaba..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/additionalPrometheusRules.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if or .Values.additionalPrometheusRules .Values.additionalPrometheusRulesMap}} -apiVersion: v1 -kind: List -metadata: - name: {{ include "kube-prometheus-stack.fullname" $ }}-additional-prometheus-rules - namespace: {{ template "kube-prometheus-stack.namespace" . }} -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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/additionalScrapeConfigs.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/additionalScrapeConfigs.yaml deleted file mode 100644 index ebdf766..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/additionalScrapeConfigs.yaml +++ /dev/null @@ -1,20 +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: -{{- if eq ( typeOf .Values.prometheus.prometheusSpec.additionalScrapeConfigs ) "string" }} - additional-scrape-configs.yaml: {{ tpl .Values.prometheus.prometheusSpec.additionalScrapeConfigs $ | b64enc | quote }} -{{- else }} - additional-scrape-configs.yaml: {{ tpl (toYaml .Values.prometheus.prometheusSpec.additionalScrapeConfigs) $ | b64enc | quote }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/ciliumnetworkpolicy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/ciliumnetworkpolicy.yaml deleted file mode 100644 index 74d61d7..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/ciliumnetworkpolicy.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and .Values.prometheus.networkPolicy.enabled (eq .Values.prometheus.networkPolicy.flavor "cilium") }} -apiVersion: cilium.io/v2 -kind: CiliumNetworkPolicy -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" . | nindent 4 }} -spec: - endpointSelector: - {{- if .Values.prometheus.networkPolicy.cilium.endpointSelector }} - {{- toYaml .Values.prometheus.networkPolicy.cilium.endpointSelector | nindent 4 }} - {{- else }} - matchExpressions: - - {key: app.kubernetes.io/name, operator: In, values: [prometheus]} - - {key: prometheus, operator: In, values: [{{ template "kube-prometheus-stack.prometheus.crname" . }}]} - {{- end }} - {{- if and .Values.prometheus.networkPolicy.cilium .Values.prometheus.networkPolicy.cilium.egress }} - egress: - {{ toYaml .Values.prometheus.networkPolicy.cilium.egress | nindent 4 }} - {{- end }} - {{- if and .Values.prometheus.networkPolicy.cilium .Values.prometheus.networkPolicy.cilium.ingress }} - ingress: - {{ toYaml .Values.prometheus.networkPolicy.cilium.ingress | nindent 4 }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/clusterrole.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/clusterrole.yaml deleted file mode 100644 index 3585b5d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/clusterrolebinding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/clusterrolebinding.yaml deleted file mode 100644 index 9fc4f65..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/csi-secret.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/csi-secret.yaml deleted file mode 100644 index e05382f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/csi-secret.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if and .Values.prometheus.prometheusSpec.thanos .Values.prometheus.prometheusSpec.thanos.secretProviderClass }} ---- -apiVersion: secrets-store.csi.x-k8s.io/v1alpha1 -kind: SecretProviderClass -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus -spec: -{{ toYaml .Values.prometheus.prometheusSpec.thanos.secretProviderClass | indent 2 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/extrasecret.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/extrasecret.yaml deleted file mode 100644 index 17f3478..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/extrasecret.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if .Values.prometheus.extraSecret.data -}} -{{- $secretName := printf "prometheus-%s-extra" (include "kube-prometheus-stack.fullname" . ) -}} -apiVersion: v1 -kind: Secret -metadata: - name: {{ default $secretName .Values.prometheus.extraSecret.name }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- if .Values.prometheus.extraSecret.annotations }} - annotations: -{{ toYaml .Values.prometheus.extraSecret.annotations | indent 4 }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus - app.kubernetes.io/component: prometheus -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -data: -{{- range $key, $val := .Values.prometheus.extraSecret.data }} - {{ $key }}: {{ $val | b64enc | quote }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/ingress.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/ingress.yaml deleted file mode 100644 index d2f6af5..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/ingress.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.ingress.enabled -}} - {{- $pathType := .Values.prometheus.ingress.pathType | default "ImplementationSpecific" -}} - {{- $serviceName := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "prometheus" -}} - {{- $servicePort := .Values.prometheus.ingress.servicePort | default .Values.prometheus.service.port -}} - {{- $routePrefix := list .Values.prometheus.prometheusSpec.routePrefix -}} - {{- $paths := .Values.prometheus.ingress.paths | default $routePrefix -}} - {{- $apiIsStable := eq (include "kube-prometheus-stack.ingress.isStable" .) "true" -}} - {{- $ingressSupportsPathType := eq (include "kube-prometheus-stack.ingress.supportsPathType" .) "true" -}} -apiVersion: {{ include "kube-prometheus-stack.ingress.apiVersion" . }} -kind: Ingress -metadata: -{{- if .Values.prometheus.ingress.annotations }} - annotations: - {{- tpl (toYaml .Values.prometheus.ingress.annotations) . | nindent 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 $apiIsStable }} - {{- 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 and $pathType $ingressSupportsPathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - {{- if $apiIsStable }} - service: - name: {{ $serviceName }} - port: - number: {{ $servicePort }} - {{- else }} - serviceName: {{ $serviceName }} - servicePort: {{ $servicePort }} - {{- end }} - {{- end -}} - {{- end -}} - {{- else }} - - http: - paths: - {{- range $p := $paths }} - - path: {{ tpl $p $ }} - {{- if and $pathType $ingressSupportsPathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - {{- if $apiIsStable }} - service: - name: {{ $serviceName }} - port: - number: {{ $servicePort }} - {{- else }} - serviceName: {{ $serviceName }} - servicePort: {{ $servicePort }} - {{- end }} - {{- end -}} - {{- end -}} - {{- if .Values.prometheus.ingress.tls }} - tls: -{{ tpl (toYaml .Values.prometheus.ingress.tls | indent 4) . }} - {{- end -}} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/ingressThanosSidecar.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/ingressThanosSidecar.yaml deleted file mode 100644 index 3f507cf..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/ingressThanosSidecar.yaml +++ /dev/null @@ -1,77 +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" .) "thanos-discovery" }} -{{- $thanosPort := .Values.prometheus.thanosIngress.servicePort -}} -{{- $routePrefix := list .Values.prometheus.prometheusSpec.routePrefix }} -{{- $paths := .Values.prometheus.thanosIngress.paths | default $routePrefix -}} -{{- $apiIsStable := eq (include "kube-prometheus-stack.ingress.isStable" .) "true" -}} -{{- $ingressSupportsPathType := eq (include "kube-prometheus-stack.ingress.supportsPathType" .) "true" -}} -apiVersion: {{ include "kube-prometheus-stack.ingress.apiVersion" . }} -kind: Ingress -metadata: -{{- if .Values.prometheus.thanosIngress.annotations }} - annotations: - {{- tpl (toYaml .Values.prometheus.thanosIngress.annotations) . | nindent 4 }} -{{- end }} - name: {{ template "kube-prometheus-stack.fullname" . }}-thanos-gateway - namespace: {{ template "kube-prometheus-stack.namespace" . }} - 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 $apiIsStable }} - {{- 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 and $pathType $ingressSupportsPathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - {{- if $apiIsStable }} - service: - name: {{ $serviceName }} - port: - number: {{ $thanosPort }} - {{- else }} - serviceName: {{ $serviceName }} - servicePort: {{ $thanosPort }} - {{- end }} - {{- end -}} - {{- end -}} - {{- else }} - - http: - paths: - {{- range $p := $paths }} - - path: {{ tpl $p $ }} - {{- if and $pathType $ingressSupportsPathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - {{- if $apiIsStable }} - service: - name: {{ $serviceName }} - port: - number: {{ $thanosPort }} - {{- else }} - serviceName: {{ $serviceName }} - servicePort: {{ $thanosPort }} - {{- end }} - {{- end -}} - {{- end -}} - {{- if .Values.prometheus.thanosIngress.tls }} - tls: -{{ tpl (toYaml .Values.prometheus.thanosIngress.tls | indent 4) . }} - {{- end -}} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/ingressperreplica.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/ingressperreplica.yaml deleted file mode 100644 index 1d76d13..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/ingressperreplica.yaml +++ /dev/null @@ -1,67 +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 -}} -{{- $apiIsStable := eq (include "kube-prometheus-stack.ingress.isStable" .) "true" -}} -{{- $ingressSupportsPathType := eq (include "kube-prometheus-stack.ingress.supportsPathType" .) "true" -}} -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 - apiVersion: {{ include "kube-prometheus-stack.ingress.apiVersion" $ }} - 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: - {{- tpl (toYaml $ingressValues.annotations) $ | nindent 8 }} - {{- end }} - spec: - {{- if $apiIsStable }} - {{- 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 and $pathType $ingressSupportsPathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - {{- if $apiIsStable }} - service: - name: {{ include "kube-prometheus-stack.fullname" $ }}-prometheus-{{ $i }} - port: - number: {{ $servicePort }} - {{- else }} - serviceName: {{ include "kube-prometheus-stack.fullname" $ }}-prometheus-{{ $i }} - servicePort: {{ $servicePort }} - {{- end }} - {{- 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/networkpolicy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/networkpolicy.yaml deleted file mode 100644 index 1296a79..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/networkpolicy.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- if and .Values.prometheus.networkPolicy.enabled (eq .Values.prometheus.networkPolicy.flavor "kubernetes") }} -apiVersion: {{ template "kube-prometheus-stack.prometheus.networkPolicy.apiVersion" . }} -kind: NetworkPolicy -metadata: - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus - {{- include "kube-prometheus-stack.labels" . | nindent 4 }} - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus - namespace: {{ template "kube-prometheus-stack.namespace" . }} -spec: - {{- if .Values.prometheus.networkPolicy.egress }} - egress: - {{- toYaml .Values.prometheus.networkPolicy.egress | nindent 4 }} - {{- end }} - {{- if .Values.prometheus.networkPolicy.ingress }} - ingress: - {{- toYaml .Values.prometheus.networkPolicy.ingress | nindent 4 }} - {{- end }} - policyTypes: - - Egress - - Ingress - podSelector: - {{- if .Values.prometheus.networkPolicy.podSelector }} - {{- toYaml .Values.prometheus.networkPolicy.podSelector | nindent 4 }} - {{- else }} - matchLabels: - {{- if .Values.prometheus.agentMode }} - app.kubernetes.io/name: prometheus-agent - {{- else }} - app.kubernetes.io/name: prometheus - {{- end }} - operator.prometheus.io/name: {{ template "kube-prometheus-stack.prometheus.crname" . }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/nginx-config.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/nginx-config.yaml deleted file mode 100644 index e4d91f9..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/nginx-config.yaml +++ /dev/null @@ -1,68 +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_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; - } - - rewrite ^/k8s/clusters/.*/proxy(.*) /$1 break; - - } - } - } diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/podDisruptionBudget.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/podDisruptionBudget.yaml deleted file mode 100644 index 48f3f1f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/podDisruptionBudget.yaml +++ /dev/null @@ -1,25 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.podDisruptionBudget.enabled }} -apiVersion: {{ include "kube-prometheus-stack.pdb.apiVersion" . }} -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: - {{- if .Values.prometheus.agentMode }} - app.kubernetes.io/name: prometheus-agent - {{- else }} - app.kubernetes.io/name: prometheus - {{- end }} - operator.prometheus.io/name: {{ template "kube-prometheus-stack.prometheus.crname" . }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/podmonitors.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/podmonitors.yaml deleted file mode 100644 index 4e748c2..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/podmonitors.yaml +++ /dev/null @@ -1,38 +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: - {{- include "servicemonitor.scrapeLimits" . | nindent 6 }} - 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/prometheus.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/prometheus.yaml deleted file mode 100644 index 5c3c8d4..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/prometheus.yaml +++ /dev/null @@ -1,472 +0,0 @@ -{{- if .Values.prometheus.enabled }} -{{- if .Values.prometheus.agentMode }} -apiVersion: monitoring.coreos.com/v1alpha1 -kind: PrometheusAgent -{{- else }} -apiVersion: monitoring.coreos.com/v1 -kind: Prometheus -{{- end }} -metadata: - name: {{ template "kube-prometheus-stack.prometheus.crname" . }} - 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: -{{- if and (not .Values.prometheus.agentMode) (or .Values.prometheus.prometheusSpec.alertingEndpoints .Values.alertmanager.enabled) }} - 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 }} - {{- if .Values.alertmanager.alertmanagerSpec.scheme }} - scheme: {{ .Values.alertmanager.alertmanagerSpec.scheme }} - {{- end }} - {{- if .Values.alertmanager.alertmanagerSpec.tlsConfig }} - tlsConfig: -{{ toYaml .Values.alertmanager.alertmanagerSpec.tlsConfig | indent 10 }} - {{- end }} - apiVersion: {{ .Values.alertmanager.apiVersion }} -{{- end }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.apiserverConfig }} - apiserverConfig: -{{ toYaml .Values.prometheus.prometheusSpec.apiserverConfig | indent 4}} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.image }} - {{- $registry := include "monitoring_registry" . | default .Values.prometheus.prometheusSpec.image.registry -}} - {{- if and .Values.prometheus.prometheusSpec.image.tag .Values.prometheus.prometheusSpec.image.sha }} - image: "{{ $registry }}/{{ .Values.prometheus.prometheusSpec.image.repository }}:{{ .Values.prometheus.prometheusSpec.image.tag }}@sha256:{{ .Values.prometheus.prometheusSpec.image.sha }}" - {{- else if .Values.prometheus.prometheusSpec.image.sha }} - image: "{{ $registry }}/{{ .Values.prometheus.prometheusSpec.image.repository }}@sha256:{{ .Values.prometheus.prometheusSpec.image.sha }}" - {{- else if .Values.prometheus.prometheusSpec.image.tag }} - image: "{{ $registry }}/{{ .Values.prometheus.prometheusSpec.image.repository }}:{{ .Values.prometheus.prometheusSpec.image.tag }}" - {{- else }} - image: "{{ $registry }}/{{ .Values.prometheus.prometheusSpec.image.repository }}" - {{- end }} - version: {{ default .Values.prometheus.prometheusSpec.image.tag .Values.prometheus.prometheusSpec.version }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.additionalArgs }} - additionalArgs: -{{ toYaml .Values.prometheus.prometheusSpec.additionalArgs | indent 4}} -{{- 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.enableRemoteWriteReceiver }} - enableRemoteWriteReceiver: {{ .Values.prometheus.prometheusSpec.enableRemoteWriteReceiver }} -{{- 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/{{ template "kube-prometheus-stack.namespace" . }}/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 }} - 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 }} -{{- if not .Values.prometheus.agentMode }} - enableAdminAPI: {{ .Values.prometheus.prometheusSpec.enableAdminAPI }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.web }} - web: -{{ toYaml .Values.prometheus.prometheusSpec.web | indent 4 }} -{{- end }} -{{- if and (not .Values.prometheus.agentMode) .Values.prometheus.prometheusSpec.exemplars }} - exemplars: - {{ toYaml .Values.prometheus.prometheusSpec.exemplars | indent 4 }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.enableFeatures }} - enableFeatures: -{{- range $enableFeatures := .Values.prometheus.prometheusSpec.enableFeatures }} - - {{ tpl $enableFeatures $ }} -{{- end }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.scrapeInterval }} - scrapeInterval: {{ .Values.prometheus.prometheusSpec.scrapeInterval }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.scrapeTimeout }} - scrapeTimeout: {{ .Values.prometheus.prometheusSpec.scrapeTimeout }} -{{- end }} -{{- if and (not .Values.prometheus.agentMode) .Values.prometheus.prometheusSpec.evaluationInterval }} - evaluationInterval: {{ .Values.prometheus.prometheusSpec.evaluationInterval }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.resources }} - resources: -{{ toYaml .Values.prometheus.prometheusSpec.resources | indent 4 }} -{{- end }} -{{- if not .Values.prometheus.agentMode }} - retention: {{ .Values.prometheus.prometheusSpec.retention | quote }} -{{- if .Values.prometheus.prometheusSpec.retentionSize }} - retentionSize: {{ .Values.prometheus.prometheusSpec.retentionSize | quote }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.tsdb }} - tsdb: - {{- if .Values.prometheus.prometheusSpec.tsdb.outOfOrderTimeWindow }} - outOfOrderTimeWindow: {{ .Values.prometheus.prometheusSpec.tsdb.outOfOrderTimeWindow }} - {{- end }} -{{- end }} -{{- end }} -{{- if eq .Values.prometheus.prometheusSpec.walCompression false }} - walCompression: false -{{ else }} - walCompression: true -{{- 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: -{{ tpl (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: -{{ tpl (toYaml .Values.prometheus.prometheusSpec.serviceMonitorNamespaceSelector | indent 4) . }} -{{ else }} - serviceMonitorNamespaceSelector: {} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.podMonitorSelector }} - podMonitorSelector: -{{ tpl (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: -{{ tpl (toYaml .Values.prometheus.prometheusSpec.podMonitorNamespaceSelector | indent 4) . }} -{{ else }} - podMonitorNamespaceSelector: {} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.probeSelector }} - probeSelector: -{{ tpl (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: -{{ tpl (toYaml .Values.prometheus.prometheusSpec.probeNamespaceSelector | indent 4) . }} -{{ else }} - probeNamespaceSelector: {} -{{- end }} -{{- if and (not .Values.prometheus.agentMode) (or .Values.prometheus.prometheusSpec.remoteRead .Values.prometheus.prometheusSpec.additionalRemoteRead) }} - remoteRead: -{{- if .Values.prometheus.prometheusSpec.remoteRead }} -{{ tpl (toYaml .Values.prometheus.prometheusSpec.remoteRead | indent 4) . }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.additionalRemoteRead }} -{{ toYaml .Values.prometheus.prometheusSpec.additionalRemoteRead | indent 4 }} -{{- end }} -{{- end }} -{{- if (or .Values.prometheus.prometheusSpec.remoteWrite .Values.prometheus.prometheusSpec.additionalRemoteWrite) }} - remoteWrite: -{{- if .Values.prometheus.prometheusSpec.remoteWrite }} -{{ tpl (toYaml .Values.prometheus.prometheusSpec.remoteWrite | indent 4) . }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.additionalRemoteWrite }} -{{ toYaml .Values.prometheus.prometheusSpec.additionalRemoteWrite | indent 4 }} -{{- end }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.securityContext }} - securityContext: -{{ toYaml .Values.prometheus.prometheusSpec.securityContext | indent 4 }} -{{- end }} -{{- if not .Values.prometheus.agentMode }} -{{- if .Values.prometheus.prometheusSpec.ruleNamespaceSelector }} - ruleNamespaceSelector: -{{ tpl (toYaml .Values.prometheus.prometheusSpec.ruleNamespaceSelector | indent 4) . }} -{{ else }} - ruleNamespaceSelector: {} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.ruleSelector }} - ruleSelector: -{{ tpl (toYaml .Values.prometheus.prometheusSpec.ruleSelector | indent 4) . }} -{{- else if .Values.prometheus.prometheusSpec.ruleSelectorNilUsesHelmValues }} - ruleSelector: - matchLabels: - release: {{ $.Release.Name | quote }} -{{ else }} - ruleSelector: {} -{{- end }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.scrapeConfigSelector }} - scrapeConfigSelector: -{{ tpl (toYaml .Values.prometheus.prometheusSpec.scrapeConfigSelector | indent 4) . }} -{{ else if .Values.prometheus.prometheusSpec.scrapeConfigSelectorNilUsesHelmValues }} - scrapeConfigSelector: - matchLabels: - release: {{ $.Release.Name | quote }} -{{ else }} - scrapeConfigSelector: {} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.scrapeConfigNamespaceSelector }} - scrapeConfigNamespaceSelector: -{{ tpl (toYaml .Values.prometheus.prometheusSpec.scrapeConfigNamespaceSelector | indent 4) . }} -{{ else }} - scrapeConfigNamespaceSelector: {} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.storageSpec }} - storage: -{{ tpl (toYaml .Values.prometheus.prometheusSpec.storageSpec | indent 4) . }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.podMetadata }} - podMetadata: -{{ tpl (toYaml .Values.prometheus.prometheusSpec.podMetadata | indent 4) . }} -{{- end }} -{{- if and (not .Values.prometheus.agentMode) .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.kubernetes.io/name, operator: In, values: [prometheus]} - - {key: prometheus, operator: In, values: [{{ template "kube-prometheus-stack.prometheus.crname" . }}]} -{{- else if eq .Values.prometheus.prometheusSpec.podAntiAffinity "soft" }} - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 100 - podAffinityTerm: - topologyKey: {{ .Values.prometheus.prometheusSpec.podAntiAffinityTopologyKey }} - labelSelector: - matchExpressions: - - {key: app.kubernetes.io/name, operator: In, values: [prometheus]} - - {key: prometheus, operator: In, values: [{{ template "kube-prometheus-stack.prometheus.crname" . }}]} -{{- 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: -{{ include "kube-prometheus-stack.imagePullSecrets" . | trim | 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 not .Values.prometheus.agentMode }} -{{- if or .Values.prometheus.prometheusSpec.additionalAlertManagerConfigs .Values.prometheus.prometheusSpec.additionalAlertManagerConfigsSecret }} - additionalAlertManagerConfigs: -{{- if .Values.prometheus.prometheusSpec.additionalAlertManagerConfigs }} - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-am-confg - key: additional-alertmanager-configs.yaml -{{- end }} -{{- if .Values.prometheus.prometheusSpec.additionalAlertManagerConfigsSecret }} - name: {{ .Values.prometheus.prometheusSpec.additionalAlertManagerConfigsSecret.name }} - key: {{ .Values.prometheus.prometheusSpec.additionalAlertManagerConfigsSecret.key }} - {{- if hasKey .Values.prometheus.prometheusSpec.additionalAlertManagerConfigsSecret "optional" }} - optional: {{ .Values.prometheus.prometheusSpec.additionalAlertManagerConfigsSecret.optional }} - {{- end }} -{{- end }} -{{- 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.additionalAlertRelabelConfigsSecret }} - additionalAlertRelabelConfigs: - name: {{ .Values.prometheus.prometheusSpec.additionalAlertRelabelConfigsSecret.name }} - key: {{ .Values.prometheus.prometheusSpec.additionalAlertRelabelConfigsSecret.key }} -{{- end }} -{{- 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 not .Values.prometheus.agentMode }} -{{- if .Values.prometheus.prometheusSpec.thanos }} - thanos: -{{- with (omit .Values.prometheus.prometheusSpec.thanos "objectStorageConfig")}} -{{ toYaml . | indent 4 }} -{{- end }} -{{- if ((.Values.prometheus.prometheusSpec.thanos.objectStorageConfig).existingSecret) }} - objectStorageConfig: - key: "{{.Values.prometheus.prometheusSpec.thanos.objectStorageConfig.existingSecret.key }}" - name: "{{.Values.prometheus.prometheusSpec.thanos.objectStorageConfig.existingSecret.name }}" -{{- else if ((.Values.prometheus.prometheusSpec.thanos.objectStorageConfig).secret) }} - objectStorageConfig: - key: object-storage-configs.yaml - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus -{{- end }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.disableCompaction }} - disableCompaction: {{ .Values.prometheus.prometheusSpec.disableCompaction }} -{{- end }} -{{- end }} - portName: {{ .Values.prometheus.prometheusSpec.portName }} -{{- 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 }} -{{- if not .Values.prometheus.agentMode }} - 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 }} - excludedFromEnforcement: -{{- range $prometheusDefaultRulesExcludedFromEnforce.rules }} - - group: monitoring.coreos.com - resource: prometheusrules - namespace: "{{ template "kube-prometheus-stack.namespace" $ }}" - name: "{{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) . | trunc 63 | trimSuffix "-" }}" -{{- end }} -{{- if .Values.prometheus.prometheusSpec.excludedFromEnforcement }} -{{ tpl (toYaml .Values.prometheus.prometheusSpec.excludedFromEnforcement | indent 4) . }} -{{- end }} -{{- end }} -{{- if and (not .Values.prometheus.agentMode) .Values.prometheus.prometheusSpec.queryLogFile }} - queryLogFile: {{ .Values.prometheus.prometheusSpec.queryLogFile }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.sampleLimit }} - sampleLimit: {{ .Values.prometheus.prometheusSpec.sampleLimit }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.enforcedKeepDroppedTargets }} - enforcedKeepDroppedTargets: {{ .Values.prometheus.prometheusSpec.enforcedKeepDroppedTargets }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.enforcedSampleLimit }} - enforcedSampleLimit: {{ .Values.prometheus.prometheusSpec.enforcedSampleLimit }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.enforcedTargetLimit }} - enforcedTargetLimit: {{ .Values.prometheus.prometheusSpec.enforcedTargetLimit }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.enforcedLabelLimit }} - enforcedLabelLimit: {{ .Values.prometheus.prometheusSpec.enforcedLabelLimit }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.enforcedLabelNameLengthLimit }} - enforcedLabelNameLengthLimit: {{ .Values.prometheus.prometheusSpec.enforcedLabelNameLengthLimit }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.enforcedLabelValueLengthLimit}} - enforcedLabelValueLengthLimit: {{ .Values.prometheus.prometheusSpec.enforcedLabelValueLengthLimit }} -{{- end }} -{{- if and (not .Values.prometheus.agentMode) .Values.prometheus.prometheusSpec.allowOverlappingBlocks }} - allowOverlappingBlocks: {{ .Values.prometheus.prometheusSpec.allowOverlappingBlocks }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.minReadySeconds }} - minReadySeconds: {{ .Values.prometheus.prometheusSpec.minReadySeconds }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.maximumStartupDurationSeconds }} - maximumStartupDurationSeconds: {{ .Values.prometheus.prometheusSpec.maximumStartupDurationSeconds }} -{{- end }} - hostNetwork: {{ .Values.prometheus.prometheusSpec.hostNetwork }} -{{- if .Values.prometheus.prometheusSpec.hostAliases }} - hostAliases: -{{ toYaml .Values.prometheus.prometheusSpec.hostAliases | indent 4 }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.tracingConfig }} - tracingConfig: -{{ toYaml .Values.prometheus.prometheusSpec.tracingConfig | indent 4 }} -{{- end }} -{{- with .Values.prometheus.prometheusSpec.additionalConfig }} - {{- tpl (toYaml .) $ | nindent 2 }} -{{- end }} -{{- with .Values.prometheus.prometheusSpec.additionalConfigString }} - {{- tpl . $ | nindent 2 }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/psp-clusterrole.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/psp-clusterrole.yaml deleted file mode 100644 index 71476cd..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/psp-clusterrole.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if and .Values.prometheus.enabled (or .Values.global.cattle.psp.enabled (and .Values.global.rbac.create .Values.global.rbac.pspEnabled)) }} -{{- if .Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy" }} -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 }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/psp-clusterrolebinding.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/psp-clusterrolebinding.yaml deleted file mode 100644 index a393928..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/psp-clusterrolebinding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if and .Values.prometheus.enabled (or .Values.global.cattle.psp.enabled (and .Values.global.rbac.create .Values.global.rbac.pspEnabled)) }} -{{- if .Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy" }} -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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/psp.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/psp.yaml deleted file mode 100644 index 62d3854..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/psp.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if and .Values.prometheus.enabled (or .Values.global.cattle.psp.enabled (and .Values.global.rbac.create .Values.global.rbac.pspEnabled)) }} -{{- if .Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy" }} -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 - # 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: - # Allow adding the root group. - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - # Allow 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 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/alertmanager.rules.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/alertmanager.rules.yaml deleted file mode 100644 index b66f052..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/alertmanager.rules.yaml +++ /dev/null @@ -1,305 +0,0 @@ -{{- /* -Generated from 'alertmanager.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/alertmanager-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.alertmanager }} -{{- $alertmanagerJob := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "alertmanager" }} -{{- $namespace := printf "%s" (include "kube-prometheus-stack.namespace" .) }} -{{- if and .Values.alertmanager.enabled .Values.alertmanager.serviceMonitor.selfMonitor }} -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: -{{- if not (.Values.defaultRules.disabled.AlertmanagerFailedReload | default false) }} - - alert: AlertmanagerFailedReload - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager | indent 8 }} -{{- end }} - description: Configuration has failed to load for {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod{{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/alertmanager/alertmanagerfailedreload - summary: Reloading an Alertmanager configuration has failed. - 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(alertmanager_config_last_reload_successful{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"}[5m]) == 0 - for: {{ dig "AlertmanagerFailedReload" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "AlertmanagerFailedReload" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.alertmanager }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.alertmanager }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.AlertmanagerMembersInconsistent | default false) }} - - alert: AlertmanagerMembersInconsistent - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager | indent 8 }} -{{- end }} - description: Alertmanager {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod{{`}}`}} has only found {{`{{`}} $value {{`}}`}} members of the {{`{{`}}$labels.job{{`}}`}} cluster. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/alertmanager/alertmanagermembersinconsistent - summary: A member of an Alertmanager cluster has not found all other cluster members. - 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(alertmanager_cluster_members{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"}[5m]) - < on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace,service,cluster) group_left - count by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace,service,cluster) (max_over_time(alertmanager_cluster_members{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"}[5m])) - for: {{ dig "AlertmanagerMembersInconsistent" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "AlertmanagerMembersInconsistent" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.alertmanager }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.alertmanager }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.AlertmanagerFailedToSendAlerts | default false) }} - - alert: AlertmanagerFailedToSendAlerts - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager | indent 8 }} -{{- end }} - description: Alertmanager {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod{{`}}`}} failed to send {{`{{`}} $value | humanizePercentage {{`}}`}} of notifications to {{`{{`}} $labels.integration {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/alertmanager/alertmanagerfailedtosendalerts - summary: An Alertmanager instance failed to send notifications. - expr: |- - ( - rate(alertmanager_notifications_failed_total{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"}[5m]) - / - ignoring (reason) group_left rate(alertmanager_notifications_total{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"}[5m]) - ) - > 0.01 - for: {{ dig "AlertmanagerFailedToSendAlerts" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "AlertmanagerFailedToSendAlerts" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.alertmanager }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.alertmanager }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.AlertmanagerClusterFailedToSendAlerts | default false) }} - - alert: AlertmanagerClusterFailedToSendAlerts - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager | indent 8 }} -{{- end }} - description: The minimum notification failure rate to {{`{{`}} $labels.integration {{`}}`}} sent from any instance in the {{`{{`}}$labels.job{{`}}`}} cluster is {{`{{`}} $value | humanizePercentage {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/alertmanager/alertmanagerclusterfailedtosendalerts - summary: All Alertmanager instances in a cluster failed to send notifications to a critical integration. - expr: |- - min by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace,service, integration) ( - rate(alertmanager_notifications_failed_total{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}", integration=~`.*`}[5m]) - / - ignoring (reason) group_left rate(alertmanager_notifications_total{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}", integration=~`.*`}[5m]) - ) - > 0.01 - for: {{ dig "AlertmanagerClusterFailedToSendAlerts" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "AlertmanagerClusterFailedToSendAlerts" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.alertmanager }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.alertmanager }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.AlertmanagerClusterFailedToSendAlerts | default false) }} - - alert: AlertmanagerClusterFailedToSendAlerts - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager | indent 8 }} -{{- end }} - description: The minimum notification failure rate to {{`{{`}} $labels.integration {{`}}`}} sent from any instance in the {{`{{`}}$labels.job{{`}}`}} cluster is {{`{{`}} $value | humanizePercentage {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/alertmanager/alertmanagerclusterfailedtosendalerts - summary: All Alertmanager instances in a cluster failed to send notifications to a non-critical integration. - expr: |- - min by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace,service, integration) ( - rate(alertmanager_notifications_failed_total{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}", integration!~`.*`}[5m]) - / - ignoring (reason) group_left rate(alertmanager_notifications_total{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}", integration!~`.*`}[5m]) - ) - > 0.01 - for: {{ dig "AlertmanagerClusterFailedToSendAlerts" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "AlertmanagerClusterFailedToSendAlerts" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.alertmanager }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.alertmanager }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.AlertmanagerConfigInconsistent | default false) }} - - alert: AlertmanagerConfigInconsistent - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager | indent 8 }} -{{- end }} - description: Alertmanager instances within the {{`{{`}}$labels.job{{`}}`}} cluster have different configurations. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/alertmanager/alertmanagerconfiginconsistent - summary: Alertmanager instances within the same cluster have different configurations. - expr: |- - count by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace,service,cluster) ( - count_values by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace,service,cluster) ("config_hash", alertmanager_config_hash{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"}) - ) - != 1 - for: {{ dig "AlertmanagerConfigInconsistent" "for" "20m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "AlertmanagerConfigInconsistent" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.alertmanager }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.alertmanager }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.AlertmanagerClusterDown | default false) }} - - alert: AlertmanagerClusterDown - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager | indent 8 }} -{{- end }} - description: '{{`{{`}} $value | humanizePercentage {{`}}`}} of Alertmanager instances within the {{`{{`}}$labels.job{{`}}`}} cluster have been up for less than half of the last 5m.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/alertmanager/alertmanagerclusterdown - summary: Half or more of the Alertmanager instances within the same cluster are down. - expr: |- - ( - count by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace,service,cluster) ( - avg_over_time(up{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"}[5m]) < 0.5 - ) - / - count by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace,service,cluster) ( - up{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"} - ) - ) - >= 0.5 - for: {{ dig "AlertmanagerClusterDown" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "AlertmanagerClusterDown" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.alertmanager }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.alertmanager }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.AlertmanagerClusterCrashlooping | default false) }} - - alert: AlertmanagerClusterCrashlooping - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.alertmanager | indent 8 }} -{{- end }} - description: '{{`{{`}} $value | humanizePercentage {{`}}`}} of Alertmanager instances within the {{`{{`}}$labels.job{{`}}`}} cluster have restarted at least 5 times in the last 10m.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/alertmanager/alertmanagerclustercrashlooping - summary: Half or more of the Alertmanager instances within the same cluster are crashlooping. - expr: |- - ( - count by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace,service,cluster) ( - changes(process_start_time_seconds{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"}[10m]) > 4 - ) - / - count by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace,service,cluster) ( - up{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"} - ) - ) - >= 0.5 - for: {{ dig "AlertmanagerClusterCrashlooping" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "AlertmanagerClusterCrashlooping" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.alertmanager }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.alertmanager }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/config-reloaders.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/config-reloaders.yaml deleted file mode 100644 index 8416d6d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/config-reloaders.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- /* -Generated from 'config-reloaders' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/prometheusOperator-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.configReloaders }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "config-reloaders" | 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: config-reloaders - rules: -{{- if not (.Values.defaultRules.disabled.ConfigReloaderSidecarErrors | default false) }} - - alert: ConfigReloaderSidecarErrors - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.configReloaders }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.configReloaders | indent 8 }} -{{- end }} - description: 'Errors encountered while the {{`{{`}}$labels.pod{{`}}`}} config-reloader sidecar attempts to sync config in {{`{{`}}$labels.namespace{{`}}`}} namespace. - - As a result, configuration for service running in {{`{{`}}$labels.pod{{`}}`}} may be stale and cannot be updated anymore.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/configreloadersidecarerrors - summary: config-reloader sidecar has not had a successful reload for 10m - expr: max_over_time(reloader_last_reload_successful{namespace=~".+"}[5m]) == 0 - for: {{ dig "ConfigReloaderSidecarErrors" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "ConfigReloaderSidecarErrors" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.configReloaders }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.configReloaders }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/etcd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/etcd.yaml deleted file mode 100644 index a1d7a50..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/etcd.yaml +++ /dev/null @@ -1,461 +0,0 @@ -{{- /* -Generated from 'etcd' group from https://github.com/etcd-io/etcd.git -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: -{{- if not (.Values.defaultRules.disabled.etcdMembersDown | default false) }} - - alert: etcdMembersDown - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }} -{{- end }} - description: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": members are down ({{`{{`}} $value {{`}}`}}).' - summary: etcd cluster members are down. - expr: |- - max without (endpoint) ( - sum without (instance) (up{job=~".*etcd.*"} == bool 0) - or - count without (To) ( - sum without (instance) (rate(etcd_network_peer_sent_failures_total{job=~".*etcd.*"}[120s])) > 0.01 - ) - ) - > 0 - for: {{ dig "etcdMembersDown" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "etcdMembersDown" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.etcdInsufficientMembers | default false) }} - - alert: etcdInsufficientMembers - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }} -{{- end }} - description: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": insufficient members ({{`{{`}} $value {{`}}`}}).' - summary: etcd cluster has insufficient number of members. - expr: sum(up{job=~".*etcd.*"} == bool 1) without (instance) < ((count(up{job=~".*etcd.*"}) without (instance) + 1) / 2) - for: {{ dig "etcdInsufficientMembers" "for" "3m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "etcdInsufficientMembers" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.etcdNoLeader | default false) }} - - alert: etcdNoLeader - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }} -{{- end }} - description: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": member {{`{{`}} $labels.instance {{`}}`}} has no leader.' - summary: etcd cluster has no leader. - expr: etcd_server_has_leader{job=~".*etcd.*"} == 0 - for: {{ dig "etcdNoLeader" "for" "1m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "etcdNoLeader" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.etcdHighNumberOfLeaderChanges | default false) }} - - alert: etcdHighNumberOfLeaderChanges - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }} -{{- end }} - description: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": {{`{{`}} $value {{`}}`}} leader changes within the last 15 minutes. Frequent elections may be a sign of insufficient resources, high network latency, or disruptions by other components and should be investigated.' - summary: etcd cluster has high number of leader changes. - expr: increase((max without (instance) (etcd_server_leader_changes_seen_total{job=~".*etcd.*"}) or 0*absent(etcd_server_leader_changes_seen_total{job=~".*etcd.*"}))[15m:1m]) >= 4 - for: {{ dig "etcdHighNumberOfLeaderChanges" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "etcdHighNumberOfLeaderChanges" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.etcdHighNumberOfFailedGRPCRequests | default false) }} - - alert: etcdHighNumberOfFailedGRPCRequests - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }} -{{- end }} - description: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": {{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.grpc_method {{`}}`}} failed on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - summary: etcd cluster has high number of failed grpc requests. - expr: |- - 100 * sum(rate(grpc_server_handled_total{job=~".*etcd.*", grpc_code=~"Unknown|FailedPrecondition|ResourceExhausted|Internal|Unavailable|DataLoss|DeadlineExceeded"}[5m])) without (grpc_type, grpc_code) - / - sum(rate(grpc_server_handled_total{job=~".*etcd.*"}[5m])) without (grpc_type, grpc_code) - > 1 - for: {{ dig "etcdHighNumberOfFailedGRPCRequests" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "etcdHighNumberOfFailedGRPCRequests" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.etcdHighNumberOfFailedGRPCRequests | default false) }} - - alert: etcdHighNumberOfFailedGRPCRequests - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }} -{{- end }} - description: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": {{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.grpc_method {{`}}`}} failed on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - summary: etcd cluster has high number of failed grpc requests. - expr: |- - 100 * sum(rate(grpc_server_handled_total{job=~".*etcd.*", grpc_code=~"Unknown|FailedPrecondition|ResourceExhausted|Internal|Unavailable|DataLoss|DeadlineExceeded"}[5m])) without (grpc_type, grpc_code) - / - sum(rate(grpc_server_handled_total{job=~".*etcd.*"}[5m])) without (grpc_type, grpc_code) - > 5 - for: {{ dig "etcdHighNumberOfFailedGRPCRequests" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "etcdHighNumberOfFailedGRPCRequests" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.etcdGRPCRequestsSlow | default false) }} - - alert: etcdGRPCRequestsSlow - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }} -{{- end }} - description: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": 99th percentile of gRPC requests is {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}} for {{`{{`}} $labels.grpc_method {{`}}`}} method.' - summary: etcd grpc requests are slow - expr: |- - histogram_quantile(0.99, sum(rate(grpc_server_handling_seconds_bucket{job=~".*etcd.*", grpc_method!="Defragment", grpc_type="unary"}[5m])) without(grpc_type)) - > 0.15 - for: {{ dig "etcdGRPCRequestsSlow" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "etcdGRPCRequestsSlow" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.etcdMemberCommunicationSlow | default false) }} - - alert: etcdMemberCommunicationSlow - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }} -{{- end }} - description: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": member communication with {{`{{`}} $labels.To {{`}}`}} is taking {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - summary: etcd cluster member communication is slow. - expr: |- - histogram_quantile(0.99, rate(etcd_network_peer_round_trip_time_seconds_bucket{job=~".*etcd.*"}[5m])) - > 0.15 - for: {{ dig "etcdMemberCommunicationSlow" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "etcdMemberCommunicationSlow" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.etcdHighNumberOfFailedProposals | default false) }} - - alert: etcdHighNumberOfFailedProposals - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }} -{{- end }} - description: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": {{`{{`}} $value {{`}}`}} proposal failures within the last 30 minutes on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - summary: etcd cluster has high number of proposal failures. - expr: rate(etcd_server_proposals_failed_total{job=~".*etcd.*"}[15m]) > 5 - for: {{ dig "etcdHighNumberOfFailedProposals" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "etcdHighNumberOfFailedProposals" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.etcdHighFsyncDurations | default false) }} - - alert: etcdHighFsyncDurations - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }} -{{- end }} - description: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": 99th percentile fsync durations are {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - summary: etcd cluster 99th percentile fsync durations are too high. - expr: |- - histogram_quantile(0.99, rate(etcd_disk_wal_fsync_duration_seconds_bucket{job=~".*etcd.*"}[5m])) - > 0.5 - for: {{ dig "etcdHighFsyncDurations" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "etcdHighFsyncDurations" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.etcdHighFsyncDurations | default false) }} - - alert: etcdHighFsyncDurations - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }} -{{- end }} - description: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": 99th percentile fsync durations are {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - summary: etcd cluster 99th percentile fsync durations are too high. - expr: |- - histogram_quantile(0.99, rate(etcd_disk_wal_fsync_duration_seconds_bucket{job=~".*etcd.*"}[5m])) - > 1 - for: {{ dig "etcdHighFsyncDurations" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "etcdHighFsyncDurations" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.etcdHighCommitDurations | default false) }} - - alert: etcdHighCommitDurations - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }} -{{- end }} - description: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": 99th percentile commit durations {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - summary: etcd cluster 99th percentile commit durations are too high. - expr: |- - histogram_quantile(0.99, rate(etcd_disk_backend_commit_duration_seconds_bucket{job=~".*etcd.*"}[5m])) - > 0.25 - for: {{ dig "etcdHighCommitDurations" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "etcdHighCommitDurations" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.etcdDatabaseQuotaLowSpace | default false) }} - - alert: etcdDatabaseQuotaLowSpace - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }} -{{- end }} - description: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": database size exceeds the defined quota on etcd instance {{`{{`}} $labels.instance {{`}}`}}, please defrag or increase the quota as the writes to etcd will be disabled when it is full.' - summary: etcd cluster database is running full. - expr: (last_over_time(etcd_mvcc_db_total_size_in_bytes{job=~".*etcd.*"}[5m]) / last_over_time(etcd_server_quota_backend_bytes{job=~".*etcd.*"}[5m]))*100 > 95 - for: {{ dig "etcdDatabaseQuotaLowSpace" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "etcdDatabaseQuotaLowSpace" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.etcdExcessiveDatabaseGrowth | default false) }} - - alert: etcdExcessiveDatabaseGrowth - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }} -{{- end }} - description: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": Predicting running out of disk space in the next four hours, based on write observations within the past four hours on etcd instance {{`{{`}} $labels.instance {{`}}`}}, please check as it might be disruptive.' - summary: etcd cluster database growing very fast. - expr: predict_linear(etcd_mvcc_db_total_size_in_bytes{job=~".*etcd.*"}[4h], 4*60*60) > etcd_server_quota_backend_bytes{job=~".*etcd.*"} - for: {{ dig "etcdExcessiveDatabaseGrowth" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "etcdExcessiveDatabaseGrowth" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.etcdDatabaseHighFragmentationRatio | default false) }} - - alert: etcdDatabaseHighFragmentationRatio - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.etcd }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.etcd | indent 8 }} -{{- end }} - description: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": database size in use on instance {{`{{`}} $labels.instance {{`}}`}} is {{`{{`}} $value | humanizePercentage {{`}}`}} of the actual allocated disk space, please run defragmentation (e.g. etcdctl defrag) to retrieve the unused fragmented disk space.' - runbook_url: https://etcd.io/docs/v3.5/op-guide/maintenance/#defragmentation - summary: etcd database size in use is less than 50% of the actual allocated storage. - expr: (last_over_time(etcd_mvcc_db_total_size_in_use_in_bytes{job=~".*etcd.*"}[5m]) / last_over_time(etcd_mvcc_db_total_size_in_bytes{job=~".*etcd.*"}[5m])) < 0.5 and etcd_mvcc_db_total_size_in_use_in_bytes{job=~".*etcd.*"} > 104857600 - for: {{ dig "etcdDatabaseHighFragmentationRatio" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "etcdDatabaseHighFragmentationRatio" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.etcd }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/general.rules.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/general.rules.yaml deleted file mode 100644 index 8aca0b8..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/general.rules.yaml +++ /dev/null @@ -1,125 +0,0 @@ -{{- /* -Generated from 'general.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubePrometheus-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.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: -{{- if not (.Values.defaultRules.disabled.TargetDown | default false) }} - - alert: TargetDown - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.general }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.general | indent 8 }} -{{- end }} - description: '{{`{{`}} printf "%.4g" $value {{`}}`}}% of the {{`{{`}} $labels.job {{`}}`}}/{{`{{`}} $labels.service {{`}}`}} targets in {{`{{`}} $labels.namespace {{`}}`}} namespace are down.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/general/targetdown - summary: One or more targets are unreachable. - expr: 100 * (count(up == 0) BY (cluster, job, namespace, service) / count(up) BY (cluster, job, namespace, service)) > 10 - for: {{ dig "TargetDown" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "TargetDown" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.general }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.general }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.Watchdog | default false) }} - - alert: Watchdog - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.general }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.general | indent 8 }} -{{- end }} - description: '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. - - ' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/general/watchdog - summary: An alert that should always be firing to certify that Alertmanager is working properly. - expr: vector(1) - labels: - severity: {{ dig "Watchdog" "severity" "none" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.general }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.general }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.InfoInhibitor | default false) }} - - alert: InfoInhibitor - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.general }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.general | indent 8 }} -{{- end }} - description: 'This is an alert that is used to inhibit info alerts. - - By themselves, the info-level alerts are sometimes very noisy, but they are relevant when combined with - - other alerts. - - This alert fires whenever there''s a severity="info" alert, and stops firing when another alert with a - - severity of ''warning'' or ''critical'' starts firing on the same namespace. - - This alert should be routed to a null receiver and configured to inhibit alerts with severity="info". - - ' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/general/infoinhibitor - summary: Info-level alert inhibition. - expr: ALERTS{severity = "info"} == 1 unless on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace) ALERTS{alertname != "InfoInhibitor", severity =~ "warning|critical", alertstate="firing"} == 1 - labels: - severity: {{ dig "InfoInhibitor" "severity" "none" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.general }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.general }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_cpu_usage_seconds_total.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_cpu_usage_seconds_total.yaml deleted file mode 100644 index 9de5f5b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_cpu_usage_seconds_total.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- /* -Generated from 'k8s.rules.container-cpu-usage-seconds-total' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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.k8sContainerCpuUsageSecondsTotal }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "k8s.rules.container-cpu-usage-seconds-total" | 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.container_cpu_usage_seconds_total - rules: - - expr: |- - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod, container) ( - irate(container_cpu_usage_seconds_total{job="kubelet", metrics_path="/metrics/cadvisor", image!=""}[5m]) - ) * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod) group_left(node) topk by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod) ( - 1, max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod, node) (kube_pod_info{node!=""}) - ) - record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sContainerCpuUsageSecondsTotal }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sContainerCpuUsageSecondsTotal }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_memory_cache.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_memory_cache.yaml deleted file mode 100644 index 323f41f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_memory_cache.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- /* -Generated from 'k8s.rules.container-memory-cache' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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.k8sContainerMemoryCache }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "k8s.rules.container-memory-cache" | 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.container_memory_cache - rules: - - expr: |- - container_memory_cache{job="kubelet", metrics_path="/metrics/cadvisor", image!=""} - * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod) group_left(node) topk by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod) (1, - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod, node) (kube_pod_info{node!=""}) - ) - record: node_namespace_pod_container:container_memory_cache - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sContainerMemoryCache }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sContainerMemoryCache }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_memory_rss.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_memory_rss.yaml deleted file mode 100644 index 312d73c..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_memory_rss.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- /* -Generated from 'k8s.rules.container-memory-rss' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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.k8sContainerMemoryRss }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "k8s.rules.container-memory-rss" | 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.container_memory_rss - rules: - - expr: |- - container_memory_rss{job="kubelet", metrics_path="/metrics/cadvisor", image!=""} - * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod) group_left(node) topk by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod) (1, - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod, node) (kube_pod_info{node!=""}) - ) - record: node_namespace_pod_container:container_memory_rss - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sContainerMemoryRss }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sContainerMemoryRss }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_memory_swap.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_memory_swap.yaml deleted file mode 100644 index 136595e..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_memory_swap.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- /* -Generated from 'k8s.rules.container-memory-swap' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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.k8sContainerMemorySwap }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "k8s.rules.container-memory-swap" | 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.container_memory_swap - rules: - - expr: |- - container_memory_swap{job="kubelet", metrics_path="/metrics/cadvisor", image!=""} - * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod) group_left(node) topk by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod) (1, - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod, node) (kube_pod_info{node!=""}) - ) - record: node_namespace_pod_container:container_memory_swap - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sContainerMemorySwap }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sContainerMemorySwap }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_memory_working_set_bytes.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_memory_working_set_bytes.yaml deleted file mode 100644 index d308b74..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_memory_working_set_bytes.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- /* -Generated from 'k8s.rules.container-memory-working-set-bytes' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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.k8sContainerMemoryWorkingSetBytes }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "k8s.rules.container-memory-working-set-bytes" | 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.container_memory_working_set_bytes - rules: - - expr: |- - container_memory_working_set_bytes{job="kubelet", metrics_path="/metrics/cadvisor", image!=""} - * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod) group_left(node) topk by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod) (1, - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod, node) (kube_pod_info{node!=""}) - ) - record: node_namespace_pod_container:container_memory_working_set_bytes - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sContainerMemoryWorkingSetBytes }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sContainerMemoryWorkingSetBytes }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_resource.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_resource.yaml deleted file mode 100644 index 2d896e5..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.container_resource.yaml +++ /dev/null @@ -1,168 +0,0 @@ -{{- /* -Generated from 'k8s.rules.container-resource' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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.k8sContainerResource }} -{{- $kubeStateMetricsJob := include "kube-prometheus-stack-kube-state-metrics.name" . }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "k8s.rules.container-resource" | 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.container_resource - rules: - - expr: |- - kube_pod_container_resource_requests{resource="memory",job="{{ $kubeStateMetricsJob }}"} * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) - group_left() max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) ( - (kube_pod_status_phase{phase=~"Pending|Running"} == 1) - ) - record: cluster:namespace:pod_memory:active:kube_pod_container_resource_requests - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sContainerResource }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sContainerResource }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, cluster) ( - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) ( - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, container, cluster) ( - kube_pod_container_resource_requests{resource="memory",job="{{ $kubeStateMetricsJob }}"} - ) * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) group_left() max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) ( - kube_pod_status_phase{phase=~"Pending|Running"} == 1 - ) - ) - ) - record: namespace_memory:kube_pod_container_resource_requests:sum - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sContainerResource }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sContainerResource }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - kube_pod_container_resource_requests{resource="cpu",job="{{ $kubeStateMetricsJob }}"} * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) - group_left() max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) ( - (kube_pod_status_phase{phase=~"Pending|Running"} == 1) - ) - record: cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sContainerResource }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sContainerResource }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, cluster) ( - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) ( - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, container, cluster) ( - kube_pod_container_resource_requests{resource="cpu",job="{{ $kubeStateMetricsJob }}"} - ) * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) group_left() max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) ( - kube_pod_status_phase{phase=~"Pending|Running"} == 1 - ) - ) - ) - record: namespace_cpu:kube_pod_container_resource_requests:sum - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sContainerResource }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sContainerResource }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - kube_pod_container_resource_limits{resource="memory",job="{{ $kubeStateMetricsJob }}"} * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) - group_left() max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) ( - (kube_pod_status_phase{phase=~"Pending|Running"} == 1) - ) - record: cluster:namespace:pod_memory:active:kube_pod_container_resource_limits - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sContainerResource }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sContainerResource }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, cluster) ( - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) ( - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, container, cluster) ( - kube_pod_container_resource_limits{resource="memory",job="{{ $kubeStateMetricsJob }}"} - ) * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) group_left() max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) ( - kube_pod_status_phase{phase=~"Pending|Running"} == 1 - ) - ) - ) - record: namespace_memory:kube_pod_container_resource_limits:sum - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sContainerResource }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sContainerResource }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - kube_pod_container_resource_limits{resource="cpu",job="{{ $kubeStateMetricsJob }}"} * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) - group_left() max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) ( - (kube_pod_status_phase{phase=~"Pending|Running"} == 1) - ) - record: cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sContainerResource }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sContainerResource }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, cluster) ( - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) ( - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, container, cluster) ( - kube_pod_container_resource_limits{resource="cpu",job="{{ $kubeStateMetricsJob }}"} - ) * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) group_left() max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) ( - kube_pod_status_phase{phase=~"Pending|Running"} == 1 - ) - ) - ) - record: namespace_cpu:kube_pod_container_resource_limits:sum - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sContainerResource }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sContainerResource }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.pod_owner.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.pod_owner.yaml deleted file mode 100644 index 4915b25..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.pod_owner.yaml +++ /dev/null @@ -1,107 +0,0 @@ -{{- /* -Generated from 'k8s.rules.pod-owner' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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.k8sPodOwner }} -{{- $kubeStateMetricsJob := include "kube-prometheus-stack-kube-state-metrics.name" . }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "k8s.rules.pod-owner" | 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.pod_owner - rules: - - expr: |- - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, workload, pod) ( - label_replace( - label_replace( - kube_pod_owner{job="{{ $kubeStateMetricsJob }}", owner_kind="ReplicaSet"}, - "replicaset", "$1", "owner_name", "(.*)" - ) * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}replicaset, namespace) group_left(owner_name) topk by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}replicaset, namespace) ( - 1, max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}replicaset, namespace, owner_name) ( - kube_replicaset_owner{job="{{ $kubeStateMetricsJob }}"} - ) - ), - "workload", "$1", "owner_name", "(.*)" - ) - ) - labels: - workload_type: deployment - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sPodOwner }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sPodOwner }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: namespace_workload_pod:kube_pod_owner:relabel - - expr: |- - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, workload, pod) ( - label_replace( - kube_pod_owner{job="{{ $kubeStateMetricsJob }}", owner_kind="DaemonSet"}, - "workload", "$1", "owner_name", "(.*)" - ) - ) - labels: - workload_type: daemonset - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sPodOwner }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sPodOwner }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: namespace_workload_pod:kube_pod_owner:relabel - - expr: |- - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, workload, pod) ( - label_replace( - kube_pod_owner{job="{{ $kubeStateMetricsJob }}", owner_kind="StatefulSet"}, - "workload", "$1", "owner_name", "(.*)" - ) - ) - labels: - workload_type: statefulset - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sPodOwner }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sPodOwner }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: namespace_workload_pod:kube_pod_owner:relabel - - expr: |- - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, workload, pod) ( - label_replace( - kube_pod_owner{job="{{ $kubeStateMetricsJob }}", owner_kind="Job"}, - "workload", "$1", "owner_name", "(.*)" - ) - ) - labels: - workload_type: job - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.k8sPodOwner }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.k8sPodOwner }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: namespace_workload_pod:kube_pod_owner:relabel -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.yaml deleted file mode 100644 index c61bd22..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/k8s.rules.yaml +++ /dev/null @@ -1,237 +0,0 @@ -{{- /* -Generated from 'k8s.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-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) ( - irate(container_cpu_usage_seconds_total{job="{{ include "exporter.kubelet.jobName" . }}", metrics_path="/metrics/cadvisor", image!=""}[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_irate - {{- if .Values.defaultRules.additionalRuleLabels }} - labels: - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - - expr: |- - container_memory_working_set_bytes{job="kubelet", metrics_path="/metrics/cadvisor", image!=""} - * 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_memory_working_set_bytes - {{- if .Values.defaultRules.additionalRuleLabels }} - labels: - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - - expr: |- - container_memory_rss{job="kubelet", metrics_path="/metrics/cadvisor", image!=""} - * 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_memory_rss - {{- if .Values.defaultRules.additionalRuleLabels }} - labels: - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - - expr: |- - container_memory_cache{job="kubelet", metrics_path="/metrics/cadvisor", image!=""} - * 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_memory_cache - {{- if .Values.defaultRules.additionalRuleLabels }} - labels: - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - - expr: |- - container_memory_swap{job="kubelet", metrics_path="/metrics/cadvisor", image!=""} - * 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_memory_swap - {{- if .Values.defaultRules.additionalRuleLabels }} - labels: - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - - expr: |- - kube_pod_container_resource_requests{resource="memory",job="kube-state-metrics"} * on (namespace, pod, cluster) - group_left() max by (namespace, pod, cluster) ( - (kube_pod_status_phase{phase=~"Pending|Running"} == 1) - ) - record: cluster:namespace:pod_memory:active:kube_pod_container_resource_requests - {{- if .Values.defaultRules.additionalRuleLabels }} - labels: - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - - expr: |- - sum by (namespace, cluster) ( - sum by (namespace, pod, cluster) ( - max by (namespace, pod, container, cluster) ( - kube_pod_container_resource_requests{resource="memory",job="kube-state-metrics"} - ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) ( - kube_pod_status_phase{phase=~"Pending|Running"} == 1 - ) - ) - ) - record: namespace_memory:kube_pod_container_resource_requests:sum - {{- if .Values.defaultRules.additionalRuleLabels }} - labels: - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - - expr: |- - kube_pod_container_resource_requests{resource="cpu",job="kube-state-metrics"} * on (namespace, pod, cluster) - group_left() max by (namespace, pod, cluster) ( - (kube_pod_status_phase{phase=~"Pending|Running"} == 1) - ) - record: cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests - {{- if .Values.defaultRules.additionalRuleLabels }} - labels: - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - - expr: |- - sum by (namespace, cluster) ( - sum by (namespace, pod, cluster) ( - max by (namespace, pod, container, cluster) ( - kube_pod_container_resource_requests{resource="cpu",job="kube-state-metrics"} - ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) ( - kube_pod_status_phase{phase=~"Pending|Running"} == 1 - ) - ) - ) - record: namespace_cpu:kube_pod_container_resource_requests:sum - {{- if .Values.defaultRules.additionalRuleLabels }} - labels: - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - - expr: |- - kube_pod_container_resource_limits{resource="memory",job="kube-state-metrics"} * on (namespace, pod, cluster) - group_left() max by (namespace, pod, cluster) ( - (kube_pod_status_phase{phase=~"Pending|Running"} == 1) - ) - record: cluster:namespace:pod_memory:active:kube_pod_container_resource_limits - {{- if .Values.defaultRules.additionalRuleLabels }} - labels: - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - - expr: |- - sum by (namespace, cluster) ( - sum by (namespace, pod, cluster) ( - max by (namespace, pod, container, cluster) ( - kube_pod_container_resource_limits{resource="memory",job="kube-state-metrics"} - ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) ( - kube_pod_status_phase{phase=~"Pending|Running"} == 1 - ) - ) - ) - record: namespace_memory:kube_pod_container_resource_limits:sum - {{- if .Values.defaultRules.additionalRuleLabels }} - labels: - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - - expr: |- - kube_pod_container_resource_limits{resource="cpu",job="kube-state-metrics"} * on (namespace, pod, cluster) - group_left() max by (namespace, pod, cluster) ( - (kube_pod_status_phase{phase=~"Pending|Running"} == 1) - ) - record: cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits - {{- if .Values.defaultRules.additionalRuleLabels }} - labels: - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - - expr: |- - sum by (namespace, cluster) ( - sum by (namespace, pod, cluster) ( - max by (namespace, pod, container, cluster) ( - kube_pod_container_resource_limits{resource="cpu",job="kube-state-metrics"} - ) * on(namespace, pod, cluster) group_left() max by (namespace, pod, cluster) ( - kube_pod_status_phase{phase=~"Pending|Running"} == 1 - ) - ) - ) - record: namespace_cpu:kube_pod_container_resource_limits:sum - {{- if .Values.defaultRules.additionalRuleLabels }} - labels: - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - - 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 - {{- if .Values.defaultRules.additionalRuleLabels }} - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - 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 - {{- if .Values.defaultRules.additionalRuleLabels }} - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - 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 - {{- if .Values.defaultRules.additionalRuleLabels }} - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - 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="Job"}, - "workload", "$1", "owner_name", "(.*)" - ) - ) - labels: - workload_type: job - {{- if .Values.defaultRules.additionalRuleLabels }} - {{ toYaml .Values.defaultRules.additionalRuleLabels | nindent 8 }} - {{- end }} - record: namespace_workload_pod:kube_pod_owner:relabel -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml deleted file mode 100644 index 6194e9c..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml +++ /dev/null @@ -1,273 +0,0 @@ -{{- /* -Generated from 'kube-apiserver-availability.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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: avg_over_time(code_verb:apiserver_request_total:increase1h[30d]) * 24 * 30 - record: code_verb:apiserver_request_total:increase30d - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, code) (code_verb:apiserver_request_total:increase30d{verb=~"LIST|GET"}) - labels: - verb: read - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: code:apiserver_request_total:increase30d - - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, code) (code_verb:apiserver_request_total:increase30d{verb=~"POST|PUT|PATCH|DELETE"}) - labels: - verb: write - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: code:apiserver_request_total:increase30d - - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, verb, scope) (increase(apiserver_request_sli_duration_seconds_count{job="apiserver"}[1h])) - record: cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase1h - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, verb, scope) (avg_over_time(cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase1h[30d]) * 24 * 30) - record: cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, verb, scope, le) (increase(apiserver_request_sli_duration_seconds_bucket[1h])) - record: cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase1h - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, verb, scope, le) (avg_over_time(cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase1h[30d]) * 24 * 30) - record: cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - 1 - ( - ( - # write too slow - sum by (cluster) (cluster_verb_scope:apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count:increase30d{verb=~"POST|PUT|PATCH|DELETE"}) - - - sum by (cluster) (cluster_verb_scope_le:apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket:increase30d{verb=~"POST|PUT|PATCH|DELETE",le="1"}) - ) + - ( - # read too slow - sum by (cluster) (cluster_verb_scope:apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count:increase30d{verb=~"LIST|GET"}) - - - ( - ( - sum by (cluster) (cluster_verb_scope_le:apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket:increase30d{verb=~"LIST|GET",scope=~"resource|",le="1"}) - or - vector(0) - ) - + - sum by (cluster) (cluster_verb_scope_le:apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket:increase30d{verb=~"LIST|GET",scope="namespace",le="5"}) - + - sum by (cluster) (cluster_verb_scope_le:apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket:increase30d{verb=~"LIST|GET",scope="cluster",le="30"}) - ) - ) + - # errors - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (code:apiserver_request_total:increase30d{code=~"5.."} or vector(0)) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (code:apiserver_request_total:increase30d) - labels: - verb: all - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:availability30d - - expr: |- - 1 - ( - sum by (cluster) (cluster_verb_scope:apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count:increase30d{verb=~"LIST|GET"}) - - - ( - # too slow - ( - sum by (cluster) (cluster_verb_scope_le:apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket:increase30d{verb=~"LIST|GET",scope=~"resource|",le="1"}) - or - vector(0) - ) - + - sum by (cluster) (cluster_verb_scope_le:apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket:increase30d{verb=~"LIST|GET",scope="namespace",le="5"}) - + - sum by (cluster) (cluster_verb_scope_le:apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket:increase30d{verb=~"LIST|GET",scope="cluster",le="30"}) - ) - + - # errors - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (code:apiserver_request_total:increase30d{verb="read",code=~"5.."} or vector(0)) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (code:apiserver_request_total:increase30d{verb="read"}) - labels: - verb: read - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:availability30d - - expr: |- - 1 - ( - ( - # too slow - sum by (cluster) (cluster_verb_scope:apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count:increase30d{verb=~"POST|PUT|PATCH|DELETE"}) - - - sum by (cluster) (cluster_verb_scope_le:apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket:increase30d{verb=~"POST|PUT|PATCH|DELETE",le="1"}) - ) - + - # errors - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (code:apiserver_request_total:increase30d{verb="write",code=~"5.."} or vector(0)) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (code:apiserver_request_total:increase30d{verb="write"}) - labels: - verb: write - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:availability30d - - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster,code,resource) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[5m])) - labels: - verb: read - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: code_resource:apiserver_request_total:rate5m - - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster,code,resource) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[5m])) - labels: - verb: write - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: code_resource:apiserver_request_total:rate5m - - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, code, verb) (increase(apiserver_request_total{job="apiserver",verb=~"LIST|GET|POST|PUT|PATCH|DELETE",code=~"2.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, code, verb) (increase(apiserver_request_total{job="apiserver",verb=~"LIST|GET|POST|PUT|PATCH|DELETE",code=~"3.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, code, verb) (increase(apiserver_request_total{job="apiserver",verb=~"LIST|GET|POST|PUT|PATCH|DELETE",code=~"4.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, code, verb) (increase(apiserver_request_total{job="apiserver",verb=~"LIST|GET|POST|PUT|PATCH|DELETE",code=~"5.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverAvailability }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-apiserver-burnrate.rules.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-apiserver-burnrate.rules.yaml deleted file mode 100644 index e6666a6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-apiserver-burnrate.rules.yaml +++ /dev/null @@ -1,440 +0,0 @@ -{{- /* -Generated from 'kube-apiserver-burnrate.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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.kubeApiserverBurnrate }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-apiserver-burnrate.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-burnrate.rules - rules: - - expr: |- - ( - ( - # too slow - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward"}[1d])) - - - ( - ( - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope=~"resource|",le="1"}[1d])) - or - vector(0) - ) - + - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="namespace",le="5"}[1d])) - + - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="cluster",le="30"}[1d])) - ) - ) - + - # errors - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[1d])) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[1d])) - labels: - verb: read - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:burnrate1d - - expr: |- - ( - ( - # too slow - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward"}[1h])) - - - ( - ( - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope=~"resource|",le="1"}[1h])) - or - vector(0) - ) - + - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="namespace",le="5"}[1h])) - + - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="cluster",le="30"}[1h])) - ) - ) - + - # errors - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[1h])) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[1h])) - labels: - verb: read - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:burnrate1h - - expr: |- - ( - ( - # too slow - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward"}[2h])) - - - ( - ( - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope=~"resource|",le="1"}[2h])) - or - vector(0) - ) - + - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="namespace",le="5"}[2h])) - + - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="cluster",le="30"}[2h])) - ) - ) - + - # errors - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[2h])) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[2h])) - labels: - verb: read - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:burnrate2h - - expr: |- - ( - ( - # too slow - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward"}[30m])) - - - ( - ( - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope=~"resource|",le="1"}[30m])) - or - vector(0) - ) - + - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="namespace",le="5"}[30m])) - + - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="cluster",le="30"}[30m])) - ) - ) - + - # errors - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[30m])) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[30m])) - labels: - verb: read - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:burnrate30m - - expr: |- - ( - ( - # too slow - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward"}[3d])) - - - ( - ( - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope=~"resource|",le="1"}[3d])) - or - vector(0) - ) - + - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="namespace",le="5"}[3d])) - + - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="cluster",le="30"}[3d])) - ) - ) - + - # errors - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[3d])) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[3d])) - labels: - verb: read - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:burnrate3d - - expr: |- - ( - ( - # too slow - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward"}[5m])) - - - ( - ( - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope=~"resource|",le="1"}[5m])) - or - vector(0) - ) - + - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="namespace",le="5"}[5m])) - + - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="cluster",le="30"}[5m])) - ) - ) - + - # errors - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[5m])) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[5m])) - labels: - verb: read - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:burnrate5m - - expr: |- - ( - ( - # too slow - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward"}[6h])) - - - ( - ( - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope=~"resource|",le="1"}[6h])) - or - vector(0) - ) - + - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="namespace",le="5"}[6h])) - + - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward",scope="cluster",le="30"}[6h])) - ) - ) - + - # errors - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[6h])) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[6h])) - labels: - verb: read - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:burnrate6h - - expr: |- - ( - ( - # too slow - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[1d])) - - - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le="1"}[1d])) - ) - + - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[1d])) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1d])) - labels: - verb: write - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:burnrate1d - - expr: |- - ( - ( - # too slow - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[1h])) - - - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le="1"}[1h])) - ) - + - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[1h])) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1h])) - labels: - verb: write - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:burnrate1h - - expr: |- - ( - ( - # too slow - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[2h])) - - - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le="1"}[2h])) - ) - + - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[2h])) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[2h])) - labels: - verb: write - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:burnrate2h - - expr: |- - ( - ( - # too slow - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[30m])) - - - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le="1"}[30m])) - ) - + - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[30m])) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[30m])) - labels: - verb: write - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:burnrate30m - - expr: |- - ( - ( - # too slow - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[3d])) - - - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le="1"}[3d])) - ) - + - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[3d])) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[3d])) - labels: - verb: write - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:burnrate3d - - expr: |- - ( - ( - # too slow - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[5m])) - - - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le="1"}[5m])) - ) - + - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[5m])) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[5m])) - labels: - verb: write - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:burnrate5m - - expr: |- - ( - ( - # too slow - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[6h])) - - - sum by (cluster) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward",le="1"}[6h])) - ) - + - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[6h])) - ) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[6h])) - labels: - verb: write - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverBurnrate }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: apiserver_request:burnrate6h -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-apiserver-histogram.rules.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-apiserver-histogram.rules.yaml deleted file mode 100644 index d145341..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-apiserver-histogram.rules.yaml +++ /dev/null @@ -1,53 +0,0 @@ -{{- /* -Generated from 'kube-apiserver-histogram.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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.kubeApiserverHistogram }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-apiserver-histogram.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-histogram.rules - rules: - - expr: histogram_quantile(0.99, sum by (cluster, le, resource) (rate(apiserver_request{{ if (semverCompare ">=1.23.0-0" $kubeTargetVersion) }}_slo{{ end }}_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",subresource!~"proxy|attach|log|exec|portforward"}[5m]))) > 0 - labels: - quantile: '0.99' - verb: read - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverHistogram }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverHistogram }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: cluster_quantile:apiserver_request_sli_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.99, sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, le, resource) (rate(apiserver_request_sli_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",subresource!~"proxy|attach|log|exec|portforward"}[5m]))) > 0 - labels: - quantile: '0.99' - verb: write - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverHistogram }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverHistogram }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: cluster_quantile:apiserver_request_sli_duration_seconds:histogram_quantile -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml deleted file mode 100644 index 30ef9a4..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml +++ /dev/null @@ -1,159 +0,0 @@ -{{- /* -Generated from 'kube-apiserver-slos' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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: -{{- if not (.Values.defaultRules.disabled.KubeAPIErrorBudgetBurn | default false) }} - - alert: KubeAPIErrorBudgetBurn - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeApiserverSlos }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeApiserverSlos | indent 8 }} -{{- end }} - description: The API server is burning too much error budget. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/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: {{ dig "KubeAPIErrorBudgetBurn" "for" "2m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - long: 1h - severity: {{ dig "KubeAPIErrorBudgetBurn" "severity" "critical" .Values.customRules }} - short: 5m - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverSlos }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverSlos }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeAPIErrorBudgetBurn | default false) }} - - alert: KubeAPIErrorBudgetBurn - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeApiserverSlos }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeApiserverSlos | indent 8 }} -{{- end }} - description: The API server is burning too much error budget. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/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: {{ dig "KubeAPIErrorBudgetBurn" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - long: 6h - severity: {{ dig "KubeAPIErrorBudgetBurn" "severity" "critical" .Values.customRules }} - short: 30m - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverSlos }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverSlos }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeAPIErrorBudgetBurn | default false) }} - - alert: KubeAPIErrorBudgetBurn - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeApiserverSlos }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeApiserverSlos | indent 8 }} -{{- end }} - description: The API server is burning too much error budget. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/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: {{ dig "KubeAPIErrorBudgetBurn" "for" "1h" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - long: 1d - severity: {{ dig "KubeAPIErrorBudgetBurn" "severity" "warning" .Values.customRules }} - short: 2h - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverSlos }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverSlos }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeAPIErrorBudgetBurn | default false) }} - - alert: KubeAPIErrorBudgetBurn - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeApiserverSlos }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeApiserverSlos | indent 8 }} -{{- end }} - description: The API server is burning too much error budget. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/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: {{ dig "KubeAPIErrorBudgetBurn" "for" "3h" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - long: 3d - severity: {{ dig "KubeAPIErrorBudgetBurn" "severity" "warning" .Values.customRules }} - short: 6h - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverSlos }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeApiserverSlos }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml deleted file mode 100644 index fcf35f3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml +++ /dev/null @@ -1,49 +0,0 @@ -{{- /* -Generated from 'kube-prometheus-general.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubePrometheus-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.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 - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusGeneral }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusGeneral }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: count without(instance, pod, node) (up == 0) - record: count:up0 - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusGeneral }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusGeneral }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml deleted file mode 100644 index 7a0d202..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml +++ /dev/null @@ -1,93 +0,0 @@ -{{- /* -Generated from 'kube-prometheus-node-recording.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubePrometheus-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.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 - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: sum(rate(node_network_receive_bytes_total[3m])) BY (instance) - record: instance:node_network_receive_bytes:rate:sum - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: sum(rate(node_network_transmit_bytes_total[3m])) BY (instance) - record: instance:node_network_transmit_bytes:rate:sum - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - 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 - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: sum(rate(node_cpu_seconds_total{mode!="idle",mode!="iowait",mode!="steal"}[5m])) - record: cluster:node_cpu:sum_rate5m - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: cluster:node_cpu:sum_rate5m / count(sum(node_cpu_seconds_total) BY (instance, cpu)) - record: cluster:node_cpu:ratio - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubePrometheusNodeRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml deleted file mode 100644 index c9d61ce..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml +++ /dev/null @@ -1,135 +0,0 @@ -{{- /* -Generated from 'kube-scheduler.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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.kubeScheduler.enabled .Values.defaultRules.rules.kubeSchedulerRecording }} -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' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - 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' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - 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' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - 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' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - 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' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - 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' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - 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' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - 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' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - 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' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: cluster_quantile:scheduler_binding_duration_seconds:histogram_quantile -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-state-metrics.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-state-metrics.yaml deleted file mode 100644 index d1ad3ca..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kube-state-metrics.yaml +++ /dev/null @@ -1,152 +0,0 @@ -{{- /* -Generated from 'kube-state-metrics' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubeStateMetrics-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.kubeStateMetrics }} -{{- $kubeStateMetricsJob := include "kube-prometheus-stack-kube-state-metrics.name" . }} -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: -{{- if not (.Values.defaultRules.disabled.KubeStateMetricsListErrors | default false) }} - - alert: KubeStateMetricsListErrors - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeStateMetrics }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeStateMetrics | indent 8 }} -{{- end }} - 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 }}/kube-state-metrics/kubestatemetricslisterrors - summary: kube-state-metrics is experiencing errors in list operations. - expr: |- - (sum(rate(kube_state_metrics_list_total{job="{{ $kubeStateMetricsJob }}",result="error"}[5m])) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) - / - sum(rate(kube_state_metrics_list_total{job="{{ $kubeStateMetricsJob }}"}[5m])) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster)) - > 0.01 - for: {{ dig "KubeStateMetricsListErrors" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeStateMetricsListErrors" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeStateMetrics }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeStateMetrics }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeStateMetricsWatchErrors | default false) }} - - alert: KubeStateMetricsWatchErrors - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeStateMetrics }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeStateMetrics | indent 8 }} -{{- end }} - 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 }}/kube-state-metrics/kubestatemetricswatcherrors - summary: kube-state-metrics is experiencing errors in watch operations. - expr: |- - (sum(rate(kube_state_metrics_watch_total{job="{{ $kubeStateMetricsJob }}",result="error"}[5m])) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) - / - sum(rate(kube_state_metrics_watch_total{job="{{ $kubeStateMetricsJob }}"}[5m])) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster)) - > 0.01 - for: {{ dig "KubeStateMetricsWatchErrors" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeStateMetricsWatchErrors" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeStateMetrics }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeStateMetrics }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeStateMetricsShardingMismatch | default false) }} - - alert: KubeStateMetricsShardingMismatch - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeStateMetrics }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeStateMetrics | indent 8 }} -{{- end }} - description: kube-state-metrics pods are running with different --total-shards configuration, some Kubernetes objects may be exposed multiple times or not exposed at all. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kube-state-metrics/kubestatemetricsshardingmismatch - summary: kube-state-metrics sharding is misconfigured. - expr: stdvar (kube_state_metrics_total_shards{job="{{ $kubeStateMetricsJob }}"}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) != 0 - for: {{ dig "KubeStateMetricsShardingMismatch" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeStateMetricsShardingMismatch" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeStateMetrics }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeStateMetrics }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeStateMetricsShardsMissing | default false) }} - - alert: KubeStateMetricsShardsMissing - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeStateMetrics }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeStateMetrics | indent 8 }} -{{- end }} - description: kube-state-metrics shards are missing, some Kubernetes objects are not being exposed. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kube-state-metrics/kubestatemetricsshardsmissing - summary: kube-state-metrics shards are missing. - expr: |- - 2^max(kube_state_metrics_total_shards{job="{{ $kubeStateMetricsJob }}"}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) - 1 - - - sum( 2 ^ max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, shard_ordinal) (kube_state_metrics_shard_ordinal{job="{{ $kubeStateMetricsJob }}"}) ) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) - != 0 - for: {{ dig "KubeStateMetricsShardsMissing" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeStateMetricsShardsMissing" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeStateMetrics }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeStateMetrics }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubelet.rules.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubelet.rules.yaml deleted file mode 100644 index 39fdddf..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubelet.rules.yaml +++ /dev/null @@ -1,65 +0,0 @@ -{{- /* -Generated from 'kubelet.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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{job="kubelet", metrics_path="/metrics"}[5m])) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance, le) * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance) group_left(node) kubelet_node_name{job="kubelet", metrics_path="/metrics"}) - labels: - quantile: '0.99' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubelet }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubelet }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.9, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job="kubelet", metrics_path="/metrics"}[5m])) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance, le) * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance) group_left(node) kubelet_node_name{job="kubelet", metrics_path="/metrics"}) - labels: - quantile: '0.9' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubelet }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubelet }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.5, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{job="kubelet", metrics_path="/metrics"}[5m])) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance, le) * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance) group_left(node) kubelet_node_name{job="kubelet", metrics_path="/metrics"}) - labels: - quantile: '0.5' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubelet }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubelet }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-apps.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-apps.yaml deleted file mode 100644 index 2a861a5..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-apps.yaml +++ /dev/null @@ -1,568 +0,0 @@ -{{- /* -Generated from 'kubernetes-apps' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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 }} -{{- $kubeStateMetricsJob := include "kube-prometheus-stack-kube-state-metrics.name" . }} -{{- $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: -{{- if not (.Values.defaultRules.disabled.KubePodCrashLooping | default false) }} - - alert: KubePodCrashLooping - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }} -{{- end }} - description: 'Pod {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} ({{`{{`}} $labels.container {{`}}`}}) is in waiting state (reason: "CrashLoopBackOff").' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubepodcrashlooping - summary: Pod is crash looping. - expr: max_over_time(kube_pod_container_status_waiting_reason{reason="CrashLoopBackOff", job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"}[5m]) >= 1 - for: {{ dig "KubePodCrashLooping" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubePodCrashLooping" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubePodNotReady | default false) }} - - alert: KubePodNotReady - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }} -{{- end }} - description: Pod {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} has been in a non-ready state for longer than 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubepodnotready - summary: Pod has been in a non-ready state for more than 15 minutes. - expr: |- - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) ( - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) ( - kube_pod_status_phase{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}", phase=~"Pending|Unknown|Failed"} - ) * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) group_left(owner_kind) topk by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, cluster) ( - 1, max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, owner_kind, cluster) (kube_pod_owner{owner_kind!="Job"}) - ) - ) > 0 - for: {{ dig "KubePodNotReady" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubePodNotReady" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeDeploymentGenerationMismatch | default false) }} - - alert: KubeDeploymentGenerationMismatch - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }} -{{- end }} - 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 }}/kubernetes/kubedeploymentgenerationmismatch - summary: Deployment generation mismatch due to possible roll-back - expr: |- - kube_deployment_status_observed_generation{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - != - kube_deployment_metadata_generation{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - for: {{ dig "KubeDeploymentGenerationMismatch" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeDeploymentGenerationMismatch" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeDeploymentReplicasMismatch | default false) }} - - alert: KubeDeploymentReplicasMismatch - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }} -{{- end }} - description: Deployment {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.deployment {{`}}`}} has not matched the expected number of replicas for longer than 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubedeploymentreplicasmismatch - summary: Deployment has not matched the expected number of replicas. - expr: |- - ( - kube_deployment_spec_replicas{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - > - kube_deployment_status_replicas_available{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - ) and ( - changes(kube_deployment_status_replicas_updated{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"}[10m]) - == - 0 - ) - for: {{ dig "KubeDeploymentReplicasMismatch" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeDeploymentReplicasMismatch" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeDeploymentRolloutStuck | default false) }} - - alert: KubeDeploymentRolloutStuck - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }} -{{- end }} - description: Rollout of deployment {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.deployment {{`}}`}} is not progressing for longer than 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubedeploymentrolloutstuck - summary: Deployment rollout is not progressing. - expr: |- - kube_deployment_status_condition{condition="Progressing", status="false",job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - != 0 - for: {{ dig "KubeDeploymentRolloutStuck" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeDeploymentRolloutStuck" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeStatefulSetReplicasMismatch | default false) }} - - alert: KubeStatefulSetReplicasMismatch - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }} -{{- end }} - description: StatefulSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.statefulset {{`}}`}} has not matched the expected number of replicas for longer than 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubestatefulsetreplicasmismatch - summary: StatefulSet has not matched the expected number of replicas. - expr: |- - ( - kube_statefulset_status_replicas_ready{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - != - kube_statefulset_status_replicas{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - ) and ( - changes(kube_statefulset_status_replicas_updated{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"}[10m]) - == - 0 - ) - for: {{ dig "KubeStatefulSetReplicasMismatch" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeStatefulSetReplicasMismatch" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeStatefulSetGenerationMismatch | default false) }} - - alert: KubeStatefulSetGenerationMismatch - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }} -{{- end }} - 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 }}/kubernetes/kubestatefulsetgenerationmismatch - summary: StatefulSet generation mismatch due to possible roll-back - expr: |- - kube_statefulset_status_observed_generation{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - != - kube_statefulset_metadata_generation{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - for: {{ dig "KubeStatefulSetGenerationMismatch" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeStatefulSetGenerationMismatch" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeStatefulSetUpdateNotRolledOut | default false) }} - - alert: KubeStatefulSetUpdateNotRolledOut - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }} -{{- end }} - description: StatefulSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.statefulset {{`}}`}} update has not been rolled out. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubestatefulsetupdatenotrolledout - summary: StatefulSet update has not been rolled out. - expr: |- - ( - max without (revision) ( - kube_statefulset_status_current_revision{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - unless - kube_statefulset_status_update_revision{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - ) - * - ( - kube_statefulset_replicas{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - != - kube_statefulset_status_replicas_updated{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - ) - ) and ( - changes(kube_statefulset_status_replicas_updated{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"}[5m]) - == - 0 - ) - for: {{ dig "KubeStatefulSetUpdateNotRolledOut" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeStatefulSetUpdateNotRolledOut" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeDaemonSetRolloutStuck | default false) }} - - alert: KubeDaemonSetRolloutStuck - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }} -{{- end }} - description: DaemonSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.daemonset {{`}}`}} has not finished or progressed for at least 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubedaemonsetrolloutstuck - summary: DaemonSet rollout is stuck. - expr: |- - ( - ( - kube_daemonset_status_current_number_scheduled{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - != - kube_daemonset_status_desired_number_scheduled{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - ) or ( - kube_daemonset_status_number_misscheduled{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - != - 0 - ) or ( - kube_daemonset_status_updated_number_scheduled{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - != - kube_daemonset_status_desired_number_scheduled{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - ) or ( - kube_daemonset_status_number_available{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - != - kube_daemonset_status_desired_number_scheduled{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - ) - ) and ( - changes(kube_daemonset_status_updated_number_scheduled{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"}[5m]) - == - 0 - ) - for: {{ dig "KubeDaemonSetRolloutStuck" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeDaemonSetRolloutStuck" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeContainerWaiting | default false) }} - - alert: KubeContainerWaiting - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }} -{{- end }} - description: pod/{{`{{`}} $labels.pod {{`}}`}} in namespace {{`{{`}} $labels.namespace {{`}}`}} on container {{`{{`}} $labels.container{{`}}`}} has been in waiting state for longer than 1 hour. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubecontainerwaiting - summary: Pod container waiting longer than 1 hour - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, pod, container, cluster) (kube_pod_container_status_waiting_reason{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"}) > 0 - for: {{ dig "KubeContainerWaiting" "for" "1h" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeContainerWaiting" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeDaemonSetNotScheduled | default false) }} - - alert: KubeDaemonSetNotScheduled - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }} -{{- end }} - description: '{{`{{`}} $value {{`}}`}} Pods of DaemonSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.daemonset {{`}}`}} are not scheduled.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubedaemonsetnotscheduled - summary: DaemonSet pods are not scheduled. - expr: |- - kube_daemonset_status_desired_number_scheduled{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - - - kube_daemonset_status_current_number_scheduled{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} > 0 - for: {{ dig "KubeDaemonSetNotScheduled" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeDaemonSetNotScheduled" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeDaemonSetMisScheduled | default false) }} - - alert: KubeDaemonSetMisScheduled - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }} -{{- end }} - description: '{{`{{`}} $value {{`}}`}} Pods of DaemonSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.daemonset {{`}}`}} are running where they are not supposed to run.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubedaemonsetmisscheduled - summary: DaemonSet pods are misscheduled. - expr: kube_daemonset_status_number_misscheduled{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} > 0 - for: {{ dig "KubeDaemonSetMisScheduled" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeDaemonSetMisScheduled" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeJobNotCompleted | default false) }} - - alert: KubeJobNotCompleted - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }} -{{- end }} - description: Job {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.job_name {{`}}`}} is taking more than {{`{{`}} "43200" | humanizeDuration {{`}}`}} to complete. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubejobnotcompleted - summary: Job did not complete in time - expr: |- - time() - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}namespace, job_name, cluster) (kube_job_status_start_time{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - and - kube_job_status_active{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} > 0) > 43200 - labels: - severity: {{ dig "KubeJobNotCompleted" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeJobFailed | default false) }} - - alert: KubeJobFailed - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }} -{{- end }} - description: Job {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.job_name {{`}}`}} failed to complete. Removing failed job after investigation should clear this alert. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubejobfailed - summary: Job failed to complete. - expr: kube_job_failed{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} > 0 - for: {{ dig "KubeJobFailed" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeJobFailed" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeHpaReplicasMismatch | default false) }} - - alert: KubeHpaReplicasMismatch - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }} -{{- end }} - description: HPA {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.horizontalpodautoscaler {{`}}`}} has not matched the desired number of replicas for longer than 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubehpareplicasmismatch - summary: HPA has not matched desired number of replicas. - expr: |- - (kube_horizontalpodautoscaler_status_desired_replicas{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - != - kube_horizontalpodautoscaler_status_current_replicas{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"}) - and - (kube_horizontalpodautoscaler_status_current_replicas{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - > - kube_horizontalpodautoscaler_spec_min_replicas{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"}) - and - (kube_horizontalpodautoscaler_status_current_replicas{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - < - kube_horizontalpodautoscaler_spec_max_replicas{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"}) - and - changes(kube_horizontalpodautoscaler_status_current_replicas{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"}[15m]) == 0 - for: {{ dig "KubeHpaReplicasMismatch" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeHpaReplicasMismatch" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeHpaMaxedOut | default false) }} - - alert: KubeHpaMaxedOut - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesApps | indent 8 }} -{{- end }} - description: HPA {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.horizontalpodautoscaler {{`}}`}} has been running at max replicas for longer than 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubehpamaxedout - summary: HPA is running at max replicas - expr: |- - kube_horizontalpodautoscaler_status_current_replicas{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - == - kube_horizontalpodautoscaler_spec_max_replicas{job="{{ $kubeStateMetricsJob }}", namespace=~"{{ $targetNamespace }}"} - for: {{ dig "KubeHpaMaxedOut" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeHpaMaxedOut" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesApps }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-resources.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-resources.yaml deleted file mode 100644 index 1d32f9b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-resources.yaml +++ /dev/null @@ -1,282 +0,0 @@ -{{- /* -Generated from 'kubernetes-resources' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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 }} -{{- $kubeStateMetricsJob := include "kube-prometheus-stack-kube-state-metrics.name" . }} -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: -{{- if not (.Values.defaultRules.disabled.KubeCPUOvercommit | default false) }} - - alert: KubeCPUOvercommit - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources | indent 8 }} -{{- end }} - description: Cluster {{`{{`}} $labels.cluster {{`}}`}} has overcommitted CPU resource requests for Pods by {{`{{`}} $value {{`}}`}} CPU shares and cannot tolerate node failure. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubecpuovercommit - summary: Cluster has overcommitted CPU resource requests. - expr: |- - sum(namespace_cpu:kube_pod_container_resource_requests:sum{job="{{ $kubeStateMetricsJob }}",}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) - (sum(kube_node_status_allocatable{job="{{ $kubeStateMetricsJob }}",resource="cpu"}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) - max(kube_node_status_allocatable{job="{{ $kubeStateMetricsJob }}",resource="cpu"}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster)) > 0 - and - (sum(kube_node_status_allocatable{job="{{ $kubeStateMetricsJob }}",resource="cpu"}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) - max(kube_node_status_allocatable{job="{{ $kubeStateMetricsJob }}",resource="cpu"}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster)) > 0 - for: {{ dig "KubeCPUOvercommit" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeCPUOvercommit" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeMemoryOvercommit | default false) }} - - alert: KubeMemoryOvercommit - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources | indent 8 }} -{{- end }} - description: Cluster {{`{{`}} $labels.cluster {{`}}`}} has overcommitted memory resource requests for Pods by {{`{{`}} $value | humanize {{`}}`}} bytes and cannot tolerate node failure. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubememoryovercommit - summary: Cluster has overcommitted memory resource requests. - expr: |- - sum(namespace_memory:kube_pod_container_resource_requests:sum{}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) - (sum(kube_node_status_allocatable{resource="memory", job="{{ $kubeStateMetricsJob }}"}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) - max(kube_node_status_allocatable{resource="memory", job="{{ $kubeStateMetricsJob }}"}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster)) > 0 - and - (sum(kube_node_status_allocatable{resource="memory", job="{{ $kubeStateMetricsJob }}"}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) - max(kube_node_status_allocatable{resource="memory", job="{{ $kubeStateMetricsJob }}"}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster)) > 0 - for: {{ dig "KubeMemoryOvercommit" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeMemoryOvercommit" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeCPUQuotaOvercommit | default false) }} - - alert: KubeCPUQuotaOvercommit - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources | indent 8 }} -{{- end }} - description: Cluster {{`{{`}} $labels.cluster {{`}}`}} has overcommitted CPU resource requests for Namespaces. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubecpuquotaovercommit - summary: Cluster has overcommitted CPU resource requests. - expr: |- - sum(min without(resource) (kube_resourcequota{job="{{ $kubeStateMetricsJob }}", type="hard", resource=~"(cpu|requests.cpu)"})) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) - / - sum(kube_node_status_allocatable{resource="cpu", job="{{ $kubeStateMetricsJob }}"}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) - > 1.5 - for: {{ dig "KubeCPUQuotaOvercommit" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeCPUQuotaOvercommit" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeMemoryQuotaOvercommit | default false) }} - - alert: KubeMemoryQuotaOvercommit - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources | indent 8 }} -{{- end }} - description: Cluster {{`{{`}} $labels.cluster {{`}}`}} has overcommitted memory resource requests for Namespaces. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubememoryquotaovercommit - summary: Cluster has overcommitted memory resource requests. - expr: |- - sum(min without(resource) (kube_resourcequota{job="{{ $kubeStateMetricsJob }}", type="hard", resource=~"(memory|requests.memory)"})) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) - / - sum(kube_node_status_allocatable{resource="memory", job="{{ $kubeStateMetricsJob }}"}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) - > 1.5 - for: {{ dig "KubeMemoryQuotaOvercommit" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeMemoryQuotaOvercommit" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeQuotaAlmostFull | default false) }} - - alert: KubeQuotaAlmostFull - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources | indent 8 }} -{{- end }} - description: Namespace {{`{{`}} $labels.namespace {{`}}`}} is using {{`{{`}} $value | humanizePercentage {{`}}`}} of its {{`{{`}} $labels.resource {{`}}`}} quota. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubequotaalmostfull - summary: Namespace quota is going to be full. - expr: |- - kube_resourcequota{job="{{ $kubeStateMetricsJob }}", type="used"} - / ignoring(instance, job, type) - (kube_resourcequota{job="{{ $kubeStateMetricsJob }}", type="hard"} > 0) - > 0.9 < 1 - for: {{ dig "KubeQuotaAlmostFull" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeQuotaAlmostFull" "severity" "info" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeQuotaFullyUsed | default false) }} - - alert: KubeQuotaFullyUsed - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources | indent 8 }} -{{- end }} - description: Namespace {{`{{`}} $labels.namespace {{`}}`}} is using {{`{{`}} $value | humanizePercentage {{`}}`}} of its {{`{{`}} $labels.resource {{`}}`}} quota. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubequotafullyused - summary: Namespace quota is fully used. - expr: |- - kube_resourcequota{job="{{ $kubeStateMetricsJob }}", type="used"} - / ignoring(instance, job, type) - (kube_resourcequota{job="{{ $kubeStateMetricsJob }}", type="hard"} > 0) - == 1 - for: {{ dig "KubeQuotaFullyUsed" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeQuotaFullyUsed" "severity" "info" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeQuotaExceeded | default false) }} - - alert: KubeQuotaExceeded - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources | indent 8 }} -{{- end }} - description: Namespace {{`{{`}} $labels.namespace {{`}}`}} is using {{`{{`}} $value | humanizePercentage {{`}}`}} of its {{`{{`}} $labels.resource {{`}}`}} quota. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubequotaexceeded - summary: Namespace quota has exceeded the limits. - expr: |- - kube_resourcequota{job="{{ $kubeStateMetricsJob }}", type="used"} - / ignoring(instance, job, type) - (kube_resourcequota{job="{{ $kubeStateMetricsJob }}", type="hard"} > 0) - > 1 - for: {{ dig "KubeQuotaExceeded" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeQuotaExceeded" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.CPUThrottlingHigh | default false) }} - - alert: CPUThrottlingHigh - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesResources | indent 8 }} -{{- end }} - description: '{{`{{`}} $value | humanizePercentage {{`}}`}} throttling of CPU in namespace {{`{{`}} $labels.namespace {{`}}`}} for container {{`{{`}} $labels.container {{`}}`}} in pod {{`{{`}} $labels.pod {{`}}`}}.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/cputhrottlinghigh - summary: Processes experience elevated CPU throttling. - expr: |- - sum(increase(container_cpu_cfs_throttled_periods_total{container!="", }[5m])) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, container, pod, namespace) - / - sum(increase(container_cpu_cfs_periods_total{}[5m])) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, container, pod, namespace) - > ( 25 / 100 ) - for: {{ dig "CPUThrottlingHigh" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "CPUThrottlingHigh" "severity" "info" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesResources }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-storage.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-storage.yaml deleted file mode 100644 index b988445..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-storage.yaml +++ /dev/null @@ -1,216 +0,0 @@ -{{- /* -Generated from 'kubernetes-storage' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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 }} -{{- $kubeStateMetricsJob := include "kube-prometheus-stack-kube-state-metrics.name" . }} -{{- $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: -{{- if not (.Values.defaultRules.disabled.KubePersistentVolumeFillingUp | default false) }} - - alert: KubePersistentVolumeFillingUp - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage | indent 8 }} -{{- end }} - description: The PersistentVolume claimed by {{`{{`}} $labels.persistentvolumeclaim {{`}}`}} in Namespace {{`{{`}} $labels.namespace {{`}}`}} {{`{{`}} with $labels.cluster -{{`}}`}} on Cluster {{`{{`}} . {{`}}`}} {{`{{`}}- end {{`}}`}} is only {{`{{`}} $value | humanizePercentage {{`}}`}} free. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/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 - and - kubelet_volume_stats_used_bytes{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"} > 0 - unless on(namespace, persistentvolumeclaim) - kube_persistentvolumeclaim_access_mode{ access_mode="ReadOnlyMany"} == 1 - unless on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, persistentvolumeclaim) - kube_persistentvolumeclaim_labels{label_excluded_from_alerts="true"} == 1 - for: {{ dig "KubePersistentVolumeFillingUp" "for" "1m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubePersistentVolumeFillingUp" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubePersistentVolumeFillingUp | default false) }} - - alert: KubePersistentVolumeFillingUp - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage | indent 8 }} -{{- end }} - description: Based on recent sampling, the PersistentVolume claimed by {{`{{`}} $labels.persistentvolumeclaim {{`}}`}} in Namespace {{`{{`}} $labels.namespace {{`}}`}} {{`{{`}} with $labels.cluster -{{`}}`}} on Cluster {{`{{`}} . {{`}}`}} {{`{{`}}- end {{`}}`}} is expected to fill up within four days. Currently {{`{{`}} $value | humanizePercentage {{`}}`}} is available. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/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 - kubelet_volume_stats_used_bytes{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"} > 0 - and - predict_linear(kubelet_volume_stats_available_bytes{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"}[6h], 4 * 24 * 3600) < 0 - unless on(namespace, persistentvolumeclaim) - kube_persistentvolumeclaim_access_mode{ access_mode="ReadOnlyMany"} == 1 - unless on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, persistentvolumeclaim) - kube_persistentvolumeclaim_labels{label_excluded_from_alerts="true"} == 1 - for: {{ dig "KubePersistentVolumeFillingUp" "for" "1h" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubePersistentVolumeFillingUp" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubePersistentVolumeInodesFillingUp | default false) }} - - alert: KubePersistentVolumeInodesFillingUp - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage | indent 8 }} -{{- end }} - description: The PersistentVolume claimed by {{`{{`}} $labels.persistentvolumeclaim {{`}}`}} in Namespace {{`{{`}} $labels.namespace {{`}}`}} {{`{{`}} with $labels.cluster -{{`}}`}} on Cluster {{`{{`}} . {{`}}`}} {{`{{`}}- end {{`}}`}} only has {{`{{`}} $value | humanizePercentage {{`}}`}} free inodes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubepersistentvolumeinodesfillingup - summary: PersistentVolumeInodes are filling up. - expr: |- - ( - kubelet_volume_stats_inodes_free{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"} - / - kubelet_volume_stats_inodes{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"} - ) < 0.03 - and - kubelet_volume_stats_inodes_used{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"} > 0 - unless on(namespace, persistentvolumeclaim) - kube_persistentvolumeclaim_access_mode{ access_mode="ReadOnlyMany"} == 1 - unless on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, persistentvolumeclaim) - kube_persistentvolumeclaim_labels{label_excluded_from_alerts="true"} == 1 - for: {{ dig "KubePersistentVolumeInodesFillingUp" "for" "1m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubePersistentVolumeInodesFillingUp" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubePersistentVolumeInodesFillingUp | default false) }} - - alert: KubePersistentVolumeInodesFillingUp - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage | indent 8 }} -{{- end }} - description: Based on recent sampling, the PersistentVolume claimed by {{`{{`}} $labels.persistentvolumeclaim {{`}}`}} in Namespace {{`{{`}} $labels.namespace {{`}}`}} {{`{{`}} with $labels.cluster -{{`}}`}} on Cluster {{`{{`}} . {{`}}`}} {{`{{`}}- end {{`}}`}} is expected to run out of inodes within four days. Currently {{`{{`}} $value | humanizePercentage {{`}}`}} of its inodes are free. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubepersistentvolumeinodesfillingup - summary: PersistentVolumeInodes are filling up. - expr: |- - ( - kubelet_volume_stats_inodes_free{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"} - / - kubelet_volume_stats_inodes{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"} - ) < 0.15 - and - kubelet_volume_stats_inodes_used{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"} > 0 - and - predict_linear(kubelet_volume_stats_inodes_free{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"}[6h], 4 * 24 * 3600) < 0 - unless on(namespace, persistentvolumeclaim) - kube_persistentvolumeclaim_access_mode{ access_mode="ReadOnlyMany"} == 1 - unless on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, persistentvolumeclaim) - kube_persistentvolumeclaim_labels{label_excluded_from_alerts="true"} == 1 - for: {{ dig "KubePersistentVolumeInodesFillingUp" "for" "1h" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubePersistentVolumeInodesFillingUp" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubePersistentVolumeErrors | default false) }} - - alert: KubePersistentVolumeErrors - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesStorage | indent 8 }} -{{- end }} - description: The persistent volume {{`{{`}} $labels.persistentvolume {{`}}`}} {{`{{`}} with $labels.cluster -{{`}}`}} on Cluster {{`{{`}} . {{`}}`}} {{`{{`}}- end {{`}}`}} has status {{`{{`}} $labels.phase {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubepersistentvolumeerrors - summary: PersistentVolume is having issues with provisioning. - expr: kube_persistentvolume_status_phase{phase=~"Failed|Pending",job="{{ $kubeStateMetricsJob }}"} > 0 - for: {{ dig "KubePersistentVolumeErrors" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubePersistentVolumeErrors" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesStorage }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml deleted file mode 100644 index af34a23..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml +++ /dev/null @@ -1,193 +0,0 @@ -{{- /* -Generated from 'kubernetes-system-apiserver' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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: -{{- if not (.Values.defaultRules.disabled.KubeClientCertificateExpiration | default false) }} - - alert: KubeClientCertificateExpiration - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: A client certificate used to authenticate to kubernetes apiserver is expiring in less than 7.0 days. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeclientcertificateexpiration - summary: Client certificate is about to expire. - expr: apiserver_client_certificate_expiration_seconds_count{job="apiserver"} > 0 and on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}job) histogram_quantile(0.01, sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}job, le) (rate(apiserver_client_certificate_expiration_seconds_bucket{job="apiserver"}[5m]))) < 604800 - for: {{ dig "KubeClientCertificateExpiration" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeClientCertificateExpiration" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeClientCertificateExpiration | default false) }} - - alert: KubeClientCertificateExpiration - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: A client certificate used to authenticate to kubernetes apiserver is expiring in less than 24.0 hours. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeclientcertificateexpiration - summary: Client certificate is about to expire. - expr: apiserver_client_certificate_expiration_seconds_count{job="apiserver"} > 0 and on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}job) histogram_quantile(0.01, sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}job, le) (rate(apiserver_client_certificate_expiration_seconds_bucket{job="apiserver"}[5m]))) < 86400 - for: {{ dig "KubeClientCertificateExpiration" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeClientCertificateExpiration" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeAggregatedAPIErrors | default false) }} - - alert: KubeAggregatedAPIErrors - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: Kubernetes 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 }}/kubernetes/kubeaggregatedapierrors - summary: Kubernetes aggregated API has reported errors. - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}name, namespace, cluster)(increase(aggregator_unavailable_apiservice_total{job="apiserver"}[10m])) > 4 - labels: - severity: {{ dig "KubeAggregatedAPIErrors" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeAggregatedAPIDown | default false) }} - - alert: KubeAggregatedAPIDown - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: Kubernetes aggregated API {{`{{`}} $labels.name {{`}}`}}/{{`{{`}} $labels.namespace {{`}}`}} has been only {{`{{`}} $value | humanize {{`}}`}}% available over the last 10m. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeaggregatedapidown - summary: Kubernetes aggregated API is down. - expr: (1 - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}name, namespace, cluster)(avg_over_time(aggregator_unavailable_apiservice{job="apiserver"}[10m]))) * 100 < 85 - for: {{ dig "KubeAggregatedAPIDown" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeAggregatedAPIDown" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if .Values.kubeApiServer.enabled }} -{{- if not (.Values.defaultRules.disabled.KubeAPIDown | default false) }} - - alert: KubeAPIDown - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: KubeAPI has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeapidown - summary: Target disappeared from Prometheus target discovery. - expr: absent(up{job="apiserver"} == 1) - for: {{ dig "KubeAPIDown" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeAPIDown" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeAPITerminatedRequests | default false) }} - - alert: KubeAPITerminatedRequests - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: The kubernetes apiserver has terminated {{`{{`}} $value | humanizePercentage {{`}}`}} of its incoming requests. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeapiterminatedrequests - summary: The kubernetes 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: {{ dig "KubeAPITerminatedRequests" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeAPITerminatedRequests" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml deleted file mode 100644 index 205bd59..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml +++ /dev/null @@ -1,55 +0,0 @@ -{{- /* -Generated from 'kubernetes-system-controller-manager' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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.kubeControllerManager }} -{{- 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 not (.Values.defaultRules.disabled.KubeControllerManagerDown | default false) }} - - alert: KubeControllerManagerDown - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeControllerManager }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeControllerManager | indent 8 }} -{{- end }} - description: KubeControllerManager has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubecontrollermanagerdown - summary: Target disappeared from Prometheus target discovery. - expr: absent(up{job="{{ include "exporter.kubeControllerManager.jobName" . }}"} == 1) - for: 15m - labels: - severity: {{ dig "KubeControllerManagerDown" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeControllerManager }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeControllerManager }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} -{{- end }} - diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-kube-proxy.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-kube-proxy.yaml deleted file mode 100644 index 66b1d62..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-kube-proxy.yaml +++ /dev/null @@ -1,56 +0,0 @@ -{{- /* -Generated from 'kubernetes-system-kube-proxy' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/kubernetesControlPlane-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.kubeProxy }} -{{- if (include "exporter.kubeProxy.enabled" .)}} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-system-kube-proxy" | 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-kube-proxy - rules: -{{- if not (.Values.defaultRules.disabled.KubeProxyDown | default false) }} - - alert: KubeProxyDown - annotations: - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupAnnotations.kubeProxy }} - {{- with .Values.defaultRules.additionalRuleAnnotations }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupAnnotations.kubeProxy }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - description: KubeProxy has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeproxydown - summary: Target disappeared from Prometheus target discovery. - expr: absent(up{job="{{ include "exporter.kubeProxy.jobName" . }}"} == 1) - for: 15m - labels: - severity: {{ dig "KubeProxyDown" "labelsSeverity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeProxy }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeProxy }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml deleted file mode 100644 index 2a55676..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml +++ /dev/null @@ -1,379 +0,0 @@ -{{- /* -Generated from 'kubernetes-system-kubelet' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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 }} -{{- $kubeStateMetricsJob := include "kube-prometheus-stack-kube-state-metrics.name" . }} -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: -{{- if not (.Values.defaultRules.disabled.KubeNodeNotReady | default false) }} - - alert: KubeNodeNotReady - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: '{{`{{`}} $labels.node {{`}}`}} has been unready for more than 15 minutes.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubenodenotready - summary: Node is not ready. - expr: kube_node_status_condition{job="{{ $kubeStateMetricsJob }}",condition="Ready",status="true"} == 0 - for: {{ dig "KubeNodeNotReady" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeNodeNotReady" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeNodeUnreachable | default false) }} - - alert: KubeNodeUnreachable - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: '{{`{{`}} $labels.node {{`}}`}} is unreachable and some workloads may be rescheduled.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubenodeunreachable - summary: Node is unreachable. - expr: (kube_node_spec_taint{job="{{ $kubeStateMetricsJob }}",key="node.kubernetes.io/unreachable",effect="NoSchedule"} unless ignoring(key,value) kube_node_spec_taint{job="{{ $kubeStateMetricsJob }}",key=~"ToBeDeletedByClusterAutoscaler|cloud.google.com/impending-node-termination|aws-node-termination-handler/spot-itn"}) == 1 - for: {{ dig "KubeNodeUnreachable" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeNodeUnreachable" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeletTooManyPods | default false) }} - - alert: KubeletTooManyPods - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: Kubelet '{{`{{`}} $labels.node {{`}}`}}' is running at {{`{{`}} $value | humanizePercentage {{`}}`}} of its Pod capacity. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubelettoomanypods - summary: Kubelet is running at capacity. - expr: |- - count by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, node) ( - (kube_pod_status_phase{job="{{ $kubeStateMetricsJob }}",phase="Running"} == 1) * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}instance,pod,namespace,cluster) group_left(node) topk by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}instance,pod,namespace,cluster) (1, kube_pod_info{job="{{ $kubeStateMetricsJob }}"}) - ) - / - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, node) ( - kube_node_status_capacity{job="{{ $kubeStateMetricsJob }}",resource="pods"} != 1 - ) > 0.95 - for: {{ dig "KubeletTooManyPods" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeletTooManyPods" "severity" "info" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeNodeReadinessFlapping | default false) }} - - alert: KubeNodeReadinessFlapping - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: The readiness status of node {{`{{`}} $labels.node {{`}}`}} has changed {{`{{`}} $value {{`}}`}} times in the last 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubenodereadinessflapping - summary: Node readiness status is flapping. - expr: sum(changes(kube_node_status_condition{job="{{ $kubeStateMetricsJob }}",status="true",condition="Ready"}[15m])) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, node) > 2 - for: {{ dig "KubeNodeReadinessFlapping" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeNodeReadinessFlapping" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeletPlegDurationHigh | default false) }} - - alert: KubeletPlegDurationHigh - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: The Kubelet Pod Lifecycle Event Generator has a 99th percentile duration of {{`{{`}} $value {{`}}`}} seconds on node {{`{{`}} $labels.node {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/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: {{ dig "KubeletPlegDurationHigh" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeletPlegDurationHigh" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeletPodStartUpLatencyHigh | default false) }} - - alert: KubeletPodStartUpLatencyHigh - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: Kubelet Pod startup 99th percentile latency is {{`{{`}} $value {{`}}`}} seconds on node {{`{{`}} $labels.node {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/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 (cluster, instance, le)) * on(cluster, instance) group_left(node) kubelet_node_name{job="{{ include "exporter.kubelet.jobName" . }}", metrics_path="/metrics"} > 60 - for: 15m - labels: - severity: {{ dig "KubeletPodStartUpLatencyHigh" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeletClientCertificateExpiration | default false) }} - - alert: KubeletClientCertificateExpiration - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: Client certificate for Kubelet on node {{`{{`}} $labels.node {{`}}`}} expires in {{`{{`}} $value | humanizeDuration {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeletclientcertificateexpiration - summary: Kubelet client certificate is about to expire. - expr: kubelet_certificate_manager_client_ttl_seconds < 604800 - labels: - severity: {{ dig "KubeletClientCertificateExpiration" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeletClientCertificateExpiration | default false) }} - - alert: KubeletClientCertificateExpiration - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: Client certificate for Kubelet on node {{`{{`}} $labels.node {{`}}`}} expires in {{`{{`}} $value | humanizeDuration {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeletclientcertificateexpiration - summary: Kubelet client certificate is about to expire. - expr: kubelet_certificate_manager_client_ttl_seconds < 86400 - labels: - severity: {{ dig "KubeletClientCertificateExpiration" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeletServerCertificateExpiration | default false) }} - - alert: KubeletServerCertificateExpiration - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: Server certificate for Kubelet on node {{`{{`}} $labels.node {{`}}`}} expires in {{`{{`}} $value | humanizeDuration {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeletservercertificateexpiration - summary: Kubelet server certificate is about to expire. - expr: kubelet_certificate_manager_server_ttl_seconds < 604800 - labels: - severity: {{ dig "KubeletServerCertificateExpiration" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeletServerCertificateExpiration | default false) }} - - alert: KubeletServerCertificateExpiration - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: Server certificate for Kubelet on node {{`{{`}} $labels.node {{`}}`}} expires in {{`{{`}} $value | humanizeDuration {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeletservercertificateexpiration - summary: Kubelet server certificate is about to expire. - expr: kubelet_certificate_manager_server_ttl_seconds < 86400 - labels: - severity: {{ dig "KubeletServerCertificateExpiration" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeletClientCertificateRenewalErrors | default false) }} - - alert: KubeletClientCertificateRenewalErrors - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - 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 }}/kubernetes/kubeletclientcertificaterenewalerrors - summary: Kubelet has failed to renew its client certificate. - expr: increase(kubelet_certificate_manager_client_expiration_renew_errors[5m]) > 0 - for: {{ dig "KubeletClientCertificateRenewalErrors" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeletClientCertificateRenewalErrors" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeletServerCertificateRenewalErrors | default false) }} - - alert: KubeletServerCertificateRenewalErrors - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - 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 }}/kubernetes/kubeletservercertificaterenewalerrors - summary: Kubelet has failed to renew its server certificate. - expr: increase(kubelet_server_expiration_renew_errors[5m]) > 0 - for: {{ dig "KubeletServerCertificateRenewalErrors" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeletServerCertificateRenewalErrors" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if (include "exporter.kubelet.enabled" .)}} -{{- if not (.Values.defaultRules.disabled.KubeletDown | default false) }} - - alert: KubeletDown - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: Kubelet has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeletdown - summary: Target disappeared from Prometheus target discovery. - expr: absent(up{job="{{ include "exporter.kubelet.jobName" . }}", metrics_path="/metrics"} == 1) - for: 15m - labels: - severity: {{ dig "KubeletDown" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml deleted file mode 100644 index 9890b1c..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml +++ /dev/null @@ -1,54 +0,0 @@ -{{- /* -Generated from 'kubernetes-system-scheduler' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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.kubeScheduler.enabled .Values.defaultRules.rules.kubeSchedulerAlerting }} -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 .Values.kubeScheduler.enabled }} -{{- if not (.Values.defaultRules.disabled.KubeSchedulerDown | default false) }} - - alert: KubeSchedulerDown - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubeSchedulerAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubeSchedulerAlerting | indent 8 }} -{{- end }} - description: KubeScheduler has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeschedulerdown - summary: Target disappeared from Prometheus target discovery. - expr: absent(up{job="{{ include "exporter.kubeScheduler.jobName" . }}"} == 1) - for: 15m - labels: - severity: {{ dig "KubeSchedulerDown" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubeSchedulerAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system.yaml deleted file mode 100644 index 621326d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/kubernetes-system.yaml +++ /dev/null @@ -1,87 +0,0 @@ -{{- /* -Generated from 'kubernetes-system' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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: -{{- if not (.Values.defaultRules.disabled.KubeVersionMismatch | default false) }} - - alert: KubeVersionMismatch - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: There are {{`{{`}} $value {{`}}`}} different semantic versions of Kubernetes components running. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeversionmismatch - summary: Different semantic versions of Kubernetes components running. - expr: count by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (count by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}git_version, cluster) (label_replace(kubernetes_build_info{job!~"kube-dns|coredns"},"git_version","$1","git_version","(v[0-9]*.[0-9]*).*"))) > 1 - for: {{ dig "KubeVersionMismatch" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeVersionMismatch" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.KubeClientErrors | default false) }} - - alert: KubeClientErrors - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.kubernetesSystem | indent 8 }} -{{- end }} - description: Kubernetes API server client '{{`{{`}} $labels.job {{`}}`}}/{{`{{`}} $labels.instance {{`}}`}}' is experiencing {{`{{`}} $value | humanizePercentage {{`}}`}} errors.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/kubernetes/kubeclienterrors - summary: Kubernetes API server client is experiencing errors. - expr: |- - (sum(rate(rest_client_requests_total{job="apiserver",code=~"5.."}[5m])) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance, job, namespace) - / - sum(rate(rest_client_requests_total{job="apiserver"}[5m])) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance, job, namespace)) - > 0.01 - for: {{ dig "KubeClientErrors" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "KubeClientErrors" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.kubernetesSystem }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/node-exporter.rules.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/node-exporter.rules.yaml deleted file mode 100644 index 5d4711a..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/node-exporter.rules.yaml +++ /dev/null @@ -1,188 +0,0 @@ -{{- /* -Generated from 'node-exporter.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/nodeExporter-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.nodeExporterRecording }} -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, mode) ( - node_cpu_seconds_total{job="node-exporter",mode="idle"} - ) - record: instance:node_num_cpu:sum - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - 1 - avg without (cpu) ( - sum without (mode) (rate(node_cpu_seconds_total{job="node-exporter", mode=~"idle|iowait|steal"}[5m])) - ) - record: instance:node_cpu_utilisation:rate5m - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - ( - node_load1{job="node-exporter"} - / - instance:node_num_cpu:sum{job="node-exporter"} - ) - record: instance:node_load1_per_cpu:ratio - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - 1 - ( - ( - 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"} - ) - ) - / - node_memory_MemTotal_bytes{job="node-exporter"} - ) - record: instance:node_memory_utilisation:ratio - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: rate(node_vmstat_pgmajfault{job="node-exporter"}[5m]) - record: instance:node_vmstat_pgmajfault:rate5m - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: rate(node_disk_io_time_seconds_total{job="node-exporter", device=~"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)"}[5m]) - record: instance_device:node_disk_io_time_seconds:rate5m - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: rate(node_disk_io_time_weighted_seconds_total{job="node-exporter", device=~"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)"}[5m]) - record: instance_device:node_disk_io_time_weighted_seconds:rate5m - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - sum without (device) ( - rate(node_network_receive_bytes_total{job="node-exporter", device!="lo"}[5m]) - ) - record: instance:node_network_receive_bytes_excluding_lo:rate5m - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - sum without (device) ( - rate(node_network_transmit_bytes_total{job="node-exporter", device!="lo"}[5m]) - ) - record: instance:node_network_transmit_bytes_excluding_lo:rate5m - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - sum without (device) ( - rate(node_network_receive_drop_total{job="node-exporter", device!="lo"}[5m]) - ) - record: instance:node_network_receive_drop_excluding_lo:rate5m - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - sum without (device) ( - rate(node_network_transmit_drop_total{job="node-exporter", device!="lo"}[5m]) - ) - record: instance:node_network_transmit_drop_excluding_lo:rate5m - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterRecording }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/node-exporter.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/node-exporter.yaml deleted file mode 100644 index 14738ce..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/node-exporter.yaml +++ /dev/null @@ -1,801 +0,0 @@ -{{- /* -Generated from 'node-exporter' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/nodeExporter-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.nodeExporterAlerting }} -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: -{{- if not (.Values.defaultRules.disabled.NodeFilesystemSpaceFillingUp | default false) }} - - alert: NodeFilesystemSpaceFillingUp - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: Filesystem on {{`{{`}} $labels.device {{`}}`}}, mounted on {{`{{`}} $labels.mountpoint {{`}}`}}, at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available space left and is filling up. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefilesystemspacefillingup - summary: Filesystem is predicted to run out of space within the next 24 hours. - expr: |- - ( - node_filesystem_avail_bytes{job="node-exporter",fstype!="",mountpoint!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!="",mountpoint!=""} * 100 < 15 - and - predict_linear(node_filesystem_avail_bytes{job="node-exporter",fstype!="",mountpoint!=""}[6h], 24*60*60) < 0 - and - node_filesystem_readonly{job="node-exporter",fstype!="",mountpoint!=""} == 0 - ) - for: {{ dig "NodeFilesystemSpaceFillingUp" "for" "1h" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeFilesystemSpaceFillingUp" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeFilesystemSpaceFillingUp | default false) }} - - alert: NodeFilesystemSpaceFillingUp - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: Filesystem on {{`{{`}} $labels.device {{`}}`}}, mounted on {{`{{`}} $labels.mountpoint {{`}}`}}, at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available space left and is filling up fast. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefilesystemspacefillingup - summary: Filesystem is predicted to run out of space within the next 4 hours. - expr: |- - ( - node_filesystem_avail_bytes{job="node-exporter",fstype!="",mountpoint!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!="",mountpoint!=""} * 100 < 10 - and - predict_linear(node_filesystem_avail_bytes{job="node-exporter",fstype!="",mountpoint!=""}[6h], 4*60*60) < 0 - and - node_filesystem_readonly{job="node-exporter",fstype!="",mountpoint!=""} == 0 - ) - for: {{ dig "NodeFilesystemSpaceFillingUp" "for" "1h" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeFilesystemSpaceFillingUp" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeFilesystemAlmostOutOfSpace | default false) }} - - alert: NodeFilesystemAlmostOutOfSpace - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: Filesystem on {{`{{`}} $labels.device {{`}}`}}, mounted on {{`{{`}} $labels.mountpoint {{`}}`}}, at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available space left. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefilesystemalmostoutofspace - summary: Filesystem has less than 5% space left. - expr: |- - ( - node_filesystem_avail_bytes{job="node-exporter",fstype!="",mountpoint!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!="",mountpoint!=""} * 100 < 5 - and - node_filesystem_readonly{job="node-exporter",fstype!="",mountpoint!=""} == 0 - ) - for: {{ dig "NodeFilesystemAlmostOutOfSpace" "for" "30m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeFilesystemAlmostOutOfSpace" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeFilesystemAlmostOutOfSpace | default false) }} - - alert: NodeFilesystemAlmostOutOfSpace - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: Filesystem on {{`{{`}} $labels.device {{`}}`}}, mounted on {{`{{`}} $labels.mountpoint {{`}}`}}, at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available space left. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefilesystemalmostoutofspace - summary: Filesystem has less than 3% space left. - expr: |- - ( - node_filesystem_avail_bytes{job="node-exporter",fstype!="",mountpoint!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!="",mountpoint!=""} * 100 < 3 - and - node_filesystem_readonly{job="node-exporter",fstype!="",mountpoint!=""} == 0 - ) - for: {{ dig "NodeFilesystemAlmostOutOfSpace" "for" "30m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeFilesystemAlmostOutOfSpace" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeFilesystemFilesFillingUp | default false) }} - - alert: NodeFilesystemFilesFillingUp - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: Filesystem on {{`{{`}} $labels.device {{`}}`}}, mounted on {{`{{`}} $labels.mountpoint {{`}}`}}, at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available inodes left and is filling up. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefilesystemfilesfillingup - summary: Filesystem is predicted to run out of inodes within the next 24 hours. - expr: |- - ( - node_filesystem_files_free{job="node-exporter",fstype!="",mountpoint!=""} / node_filesystem_files{job="node-exporter",fstype!="",mountpoint!=""} * 100 < 40 - and - predict_linear(node_filesystem_files_free{job="node-exporter",fstype!="",mountpoint!=""}[6h], 24*60*60) < 0 - and - node_filesystem_readonly{job="node-exporter",fstype!="",mountpoint!=""} == 0 - ) - for: {{ dig "NodeFilesystemFilesFillingUp" "for" "1h" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeFilesystemFilesFillingUp" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeFilesystemFilesFillingUp | default false) }} - - alert: NodeFilesystemFilesFillingUp - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: Filesystem on {{`{{`}} $labels.device {{`}}`}}, mounted on {{`{{`}} $labels.mountpoint {{`}}`}}, at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available inodes left and is filling up fast. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefilesystemfilesfillingup - summary: Filesystem is predicted to run out of inodes within the next 4 hours. - expr: |- - ( - node_filesystem_files_free{job="node-exporter",fstype!="",mountpoint!=""} / node_filesystem_files{job="node-exporter",fstype!="",mountpoint!=""} * 100 < 20 - and - predict_linear(node_filesystem_files_free{job="node-exporter",fstype!="",mountpoint!=""}[6h], 4*60*60) < 0 - and - node_filesystem_readonly{job="node-exporter",fstype!="",mountpoint!=""} == 0 - ) - for: {{ dig "NodeFilesystemFilesFillingUp" "for" "1h" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeFilesystemFilesFillingUp" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeFilesystemAlmostOutOfFiles | default false) }} - - alert: NodeFilesystemAlmostOutOfFiles - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: Filesystem on {{`{{`}} $labels.device {{`}}`}}, mounted on {{`{{`}} $labels.mountpoint {{`}}`}}, at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available inodes left. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefilesystemalmostoutoffiles - summary: Filesystem has less than 5% inodes left. - expr: |- - ( - node_filesystem_files_free{job="node-exporter",fstype!="",mountpoint!=""} / node_filesystem_files{job="node-exporter",fstype!="",mountpoint!=""} * 100 < 5 - and - node_filesystem_readonly{job="node-exporter",fstype!="",mountpoint!=""} == 0 - ) - for: {{ dig "NodeFilesystemAlmostOutOfFiles" "for" "1h" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeFilesystemAlmostOutOfFiles" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeFilesystemAlmostOutOfFiles | default false) }} - - alert: NodeFilesystemAlmostOutOfFiles - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: Filesystem on {{`{{`}} $labels.device {{`}}`}}, mounted on {{`{{`}} $labels.mountpoint {{`}}`}}, at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available inodes left. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefilesystemalmostoutoffiles - summary: Filesystem has less than 3% inodes left. - expr: |- - ( - node_filesystem_files_free{job="node-exporter",fstype!="",mountpoint!=""} / node_filesystem_files{job="node-exporter",fstype!="",mountpoint!=""} * 100 < 3 - and - node_filesystem_readonly{job="node-exporter",fstype!="",mountpoint!=""} == 0 - ) - for: {{ dig "NodeFilesystemAlmostOutOfFiles" "for" "1h" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeFilesystemAlmostOutOfFiles" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeNetworkReceiveErrs | default false) }} - - alert: NodeNetworkReceiveErrs - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: '{{`{{`}} $labels.instance {{`}}`}} interface {{`{{`}} $labels.device {{`}}`}} has encountered {{`{{`}} printf "%.0f" $value {{`}}`}} receive errors in the last two minutes.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodenetworkreceiveerrs - summary: Network interface is reporting many receive errors. - expr: rate(node_network_receive_errs_total{job="node-exporter"}[2m]) / rate(node_network_receive_packets_total{job="node-exporter"}[2m]) > 0.01 - for: {{ dig "NodeNetworkReceiveErrs" "for" "1h" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeNetworkReceiveErrs" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeNetworkTransmitErrs | default false) }} - - alert: NodeNetworkTransmitErrs - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: '{{`{{`}} $labels.instance {{`}}`}} interface {{`{{`}} $labels.device {{`}}`}} has encountered {{`{{`}} printf "%.0f" $value {{`}}`}} transmit errors in the last two minutes.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodenetworktransmiterrs - summary: Network interface is reporting many transmit errors. - expr: rate(node_network_transmit_errs_total{job="node-exporter"}[2m]) / rate(node_network_transmit_packets_total{job="node-exporter"}[2m]) > 0.01 - for: {{ dig "NodeNetworkTransmitErrs" "for" "1h" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeNetworkTransmitErrs" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeHighNumberConntrackEntriesUsed | default false) }} - - alert: NodeHighNumberConntrackEntriesUsed - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: '{{`{{`}} $value | humanizePercentage {{`}}`}} of conntrack entries are used.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodehighnumberconntrackentriesused - summary: Number of conntrack are getting close to the limit. - expr: (node_nf_conntrack_entries{job="node-exporter"} / node_nf_conntrack_entries_limit) > 0.75 - labels: - severity: {{ dig "NodeHighNumberConntrackEntriesUsed" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeTextFileCollectorScrapeError | default false) }} - - alert: NodeTextFileCollectorScrapeError - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: Node Exporter text file collector on {{`{{`}} $labels.instance {{`}}`}} failed to scrape. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodetextfilecollectorscrapeerror - summary: Node Exporter text file collector failed to scrape. - expr: node_textfile_scrape_error{job="node-exporter"} == 1 - labels: - severity: {{ dig "NodeTextFileCollectorScrapeError" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeClockSkewDetected | default false) }} - - alert: NodeClockSkewDetected - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: Clock at {{`{{`}} $labels.instance {{`}}`}} is out of sync by more than 0.05s. Ensure NTP is configured correctly on this host. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodeclockskewdetected - summary: Clock skew detected. - expr: |- - ( - node_timex_offset_seconds{job="node-exporter"} > 0.05 - and - deriv(node_timex_offset_seconds{job="node-exporter"}[5m]) >= 0 - ) - or - ( - node_timex_offset_seconds{job="node-exporter"} < -0.05 - and - deriv(node_timex_offset_seconds{job="node-exporter"}[5m]) <= 0 - ) - for: {{ dig "NodeClockSkewDetected" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeClockSkewDetected" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeClockNotSynchronising | default false) }} - - alert: NodeClockNotSynchronising - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: Clock at {{`{{`}} $labels.instance {{`}}`}} is not synchronising. Ensure NTP is configured on this host. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodeclocknotsynchronising - summary: Clock not synchronising. - expr: |- - min_over_time(node_timex_sync_status{job="node-exporter"}[5m]) == 0 - and - node_timex_maxerror_seconds{job="node-exporter"} >= 16 - for: {{ dig "NodeClockNotSynchronising" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeClockNotSynchronising" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeRAIDDegraded | default false) }} - - alert: NodeRAIDDegraded - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: RAID array '{{`{{`}} $labels.device {{`}}`}}' at {{`{{`}} $labels.instance {{`}}`}} is in degraded state due to one or more disks failures. Number of spare drives is insufficient to fix issue automatically. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/noderaiddegraded - summary: RAID Array is degraded. - expr: node_md_disks_required{job="node-exporter",device=~"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)"} - ignoring (state) (node_md_disks{state="active",job="node-exporter",device=~"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)"}) > 0 - for: {{ dig "NodeRAIDDegraded" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeRAIDDegraded" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeRAIDDiskFailure | default false) }} - - alert: NodeRAIDDiskFailure - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: At least one device in RAID array at {{`{{`}} $labels.instance {{`}}`}} failed. Array '{{`{{`}} $labels.device {{`}}`}}' needs attention and possibly a disk swap. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/noderaiddiskfailure - summary: Failed device in RAID array. - expr: node_md_disks{state="failed",job="node-exporter",device=~"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)"} > 0 - labels: - severity: {{ dig "NodeRAIDDiskFailure" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeFileDescriptorLimit | default false) }} - - alert: NodeFileDescriptorLimit - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: File descriptors limit at {{`{{`}} $labels.instance {{`}}`}} is currently at {{`{{`}} printf "%.2f" $value {{`}}`}}%. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefiledescriptorlimit - summary: Kernel is predicted to exhaust file descriptors limit soon. - expr: |- - ( - node_filefd_allocated{job="node-exporter"} * 100 / node_filefd_maximum{job="node-exporter"} > 70 - ) - for: {{ dig "NodeFileDescriptorLimit" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeFileDescriptorLimit" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeFileDescriptorLimit | default false) }} - - alert: NodeFileDescriptorLimit - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: File descriptors limit at {{`{{`}} $labels.instance {{`}}`}} is currently at {{`{{`}} printf "%.2f" $value {{`}}`}}%. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodefiledescriptorlimit - summary: Kernel is predicted to exhaust file descriptors limit soon. - expr: |- - ( - node_filefd_allocated{job="node-exporter"} * 100 / node_filefd_maximum{job="node-exporter"} > 90 - ) - for: {{ dig "NodeFileDescriptorLimit" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeFileDescriptorLimit" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeCPUHighUsage | default false) }} - - alert: NodeCPUHighUsage - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: 'CPU usage at {{`{{`}} $labels.instance {{`}}`}} has been above 90% for the last 15 minutes, is currently at {{`{{`}} printf "%.2f" $value {{`}}`}}%. - - ' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodecpuhighusage - summary: High CPU usage. - expr: sum without(mode) (avg without (cpu) (rate(node_cpu_seconds_total{job="node-exporter", mode!="idle"}[2m]))) * 100 > 90 - for: {{ dig "NodeCPUHighUsage" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeCPUHighUsage" "severity" "info" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeSystemSaturation | default false) }} - - alert: NodeSystemSaturation - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: 'System load per core at {{`{{`}} $labels.instance {{`}}`}} has been above 2 for the last 15 minutes, is currently at {{`{{`}} printf "%.2f" $value {{`}}`}}. - - This might indicate this instance resources saturation and can cause it becoming unresponsive. - - ' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodesystemsaturation - summary: System saturated, load per core is very high. - expr: |- - node_load1{job="node-exporter"} - / count without (cpu, mode) (node_cpu_seconds_total{job="node-exporter", mode="idle"}) > 2 - for: {{ dig "NodeSystemSaturation" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeSystemSaturation" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeMemoryMajorPagesFaults | default false) }} - - alert: NodeMemoryMajorPagesFaults - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: 'Memory major pages are occurring at very high rate at {{`{{`}} $labels.instance {{`}}`}}, 500 major page faults per second for the last 15 minutes, is currently at {{`{{`}} printf "%.2f" $value {{`}}`}}. - - Please check that there is enough memory available at this instance. - - ' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodememorymajorpagesfaults - summary: Memory major page faults are occurring at very high rate. - expr: rate(node_vmstat_pgmajfault{job="node-exporter"}[5m]) > 500 - for: {{ dig "NodeMemoryMajorPagesFaults" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeMemoryMajorPagesFaults" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeMemoryHighUtilization | default false) }} - - alert: NodeMemoryHighUtilization - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: 'Memory is filling up at {{`{{`}} $labels.instance {{`}}`}}, has been above 90% for the last 15 minutes, is currently at {{`{{`}} printf "%.2f" $value {{`}}`}}%. - - ' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodememoryhighutilization - summary: Host is running out of memory. - expr: 100 - (node_memory_MemAvailable_bytes{job="node-exporter"} / node_memory_MemTotal_bytes{job="node-exporter"} * 100) > 90 - for: {{ dig "NodeMemoryHighUtilization" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeMemoryHighUtilization" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeDiskIOSaturation | default false) }} - - alert: NodeDiskIOSaturation - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: 'Disk IO queue (aqu-sq) is high on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}}, has been above 10 for the last 30 minutes, is currently at {{`{{`}} printf "%.2f" $value {{`}}`}}. - - This symptom might indicate disk saturation. - - ' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodediskiosaturation - summary: Disk IO queue is high. - expr: rate(node_disk_io_time_weighted_seconds_total{job="node-exporter", device=~"(/dev/)?(mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|md.+|dasd.+)"}[5m]) > 10 - for: {{ dig "NodeDiskIOSaturation" "for" "30m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeDiskIOSaturation" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeSystemdServiceFailed | default false) }} - - alert: NodeSystemdServiceFailed - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: Systemd service {{`{{`}} $labels.name {{`}}`}} has entered failed state at {{`{{`}} $labels.instance {{`}}`}} - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodesystemdservicefailed - summary: Systemd service has entered failed state. - expr: node_systemd_unit_state{job="node-exporter", state="failed"} == 1 - for: {{ dig "NodeSystemdServiceFailed" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeSystemdServiceFailed" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.NodeBondingDegraded | default false) }} - - alert: NodeBondingDegraded - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.nodeExporterAlerting | indent 8 }} -{{- end }} - description: Bonding interface {{`{{`}} $labels.master {{`}}`}} on {{`{{`}} $labels.instance {{`}}`}} is in degraded state due to one or more slave failures. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/node/nodebondingdegraded - summary: Bonding interface is degraded - expr: (node_bonding_slaves - node_bonding_active) != 0 - for: {{ dig "NodeBondingDegraded" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeBondingDegraded" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.nodeExporterAlerting }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/node-network.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/node-network.yaml deleted file mode 100644 index 8dc60ef..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/node-network.yaml +++ /dev/null @@ -1,55 +0,0 @@ -{{- /* -Generated from 'node-network' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubePrometheus-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.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: -{{- if not (.Values.defaultRules.disabled.NodeNetworkInterfaceFlapping | default false) }} - - alert: NodeNetworkInterfaceFlapping - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.network }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.network | indent 8 }} -{{- end }} - description: Network interface "{{`{{`}} $labels.device {{`}}`}}" changing its up status often on node-exporter {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} - runbook_url: {{ .Values.defaultRules.runbookUrl }}/general/nodenetworkinterfaceflapping - summary: Network interface is often changing its status - expr: changes(node_network_up{job="node-exporter",device!~"veth.+"}[2m]) > 2 - for: {{ dig "NodeNetworkInterfaceFlapping" "for" "2m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "NodeNetworkInterfaceFlapping" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.network }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.network }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/node.rules.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/node.rules.yaml deleted file mode 100644 index e2911b9..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/node.rules.yaml +++ /dev/null @@ -1,109 +0,0 @@ -{{- /* -Generated from 'node.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/kubernetesControlPlane-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 }} -{{- $kubeStateMetricsJob := include "kube-prometheus-stack-kube-state-metrics.name" . }} -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 ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod) (1, - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, node, namespace, pod) ( - label_replace(kube_pod_info{job="{{ $kubeStateMetricsJob }}",node!=""}, "pod", "$1", "pod", "(.*)") - )) - record: 'node_namespace_pod:kube_pod_info:' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.node }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.node }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - count by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, node) ( - node_cpu_seconds_total{mode="idle",job="node-exporter"} - * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod) group_left(node) - topk by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod) (1, node_namespace_pod:kube_pod_info:) - ) - record: node:node_num_cpu:sum - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.node }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.node }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - 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 ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) - record: :node_memory_MemAvailable_bytes:sum - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.node }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.node }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - avg by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, node) ( - sum without (mode) ( - rate(node_cpu_seconds_total{mode!="idle",mode!="iowait",mode!="steal",job="node-exporter"}[5m]) - ) - ) - record: node:node_cpu_utilization:ratio_rate5m - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.node }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.node }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - avg by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) ( - node:node_cpu_utilization:ratio_rate5m - ) - record: cluster:node_cpu:ratio_rate5m - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.node }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.node }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/prometheus-operator.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/prometheus-operator.yaml deleted file mode 100644 index 1f288df..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/prometheus-operator.yaml +++ /dev/null @@ -1,253 +0,0 @@ -{{- /* -Generated from 'prometheus-operator' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/prometheusOperator-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.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: -{{- if not (.Values.defaultRules.disabled.PrometheusOperatorListErrors | default false) }} - - alert: PrometheusOperatorListErrors - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator | indent 8 }} -{{- end }} - description: Errors while performing List operations in controller {{`{{`}}$labels.controller{{`}}`}} in {{`{{`}}$labels.namespace{{`}}`}} namespace. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/prometheusoperatorlisterrors - summary: Errors while performing list operations in controller. - expr: (sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster,controller,namespace) (rate(prometheus_operator_list_operations_failed_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[10m])) / sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster,controller,namespace) (rate(prometheus_operator_list_operations_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[10m]))) > 0.4 - for: {{ dig "PrometheusOperatorListErrors" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusOperatorListErrors" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusOperatorWatchErrors | default false) }} - - alert: PrometheusOperatorWatchErrors - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator | indent 8 }} -{{- end }} - description: Errors while performing watch operations in controller {{`{{`}}$labels.controller{{`}}`}} in {{`{{`}}$labels.namespace{{`}}`}} namespace. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/prometheusoperatorwatcherrors - summary: Errors while performing watch operations in controller. - expr: (sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster,controller,namespace) (rate(prometheus_operator_watch_operations_failed_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m])) / sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster,controller,namespace) (rate(prometheus_operator_watch_operations_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]))) > 0.4 - for: {{ dig "PrometheusOperatorWatchErrors" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusOperatorWatchErrors" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusOperatorSyncFailed | default false) }} - - alert: PrometheusOperatorSyncFailed - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator | indent 8 }} -{{- end }} - description: Controller {{`{{`}} $labels.controller {{`}}`}} in {{`{{`}} $labels.namespace {{`}}`}} namespace fails to reconcile {{`{{`}} $value {{`}}`}} objects. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/prometheusoperatorsyncfailed - summary: Last controller reconciliation failed - expr: min_over_time(prometheus_operator_syncs{status="failed",job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]) > 0 - for: {{ dig "PrometheusOperatorSyncFailed" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusOperatorSyncFailed" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusOperatorReconcileErrors | default false) }} - - alert: PrometheusOperatorReconcileErrors - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator | indent 8 }} -{{- end }} - description: '{{`{{`}} $value | humanizePercentage {{`}}`}} of reconciling operations failed for {{`{{`}} $labels.controller {{`}}`}} controller in {{`{{`}} $labels.namespace {{`}}`}} namespace.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/prometheusoperatorreconcileerrors - summary: Errors while reconciling objects. - expr: (sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster,controller,namespace) (rate(prometheus_operator_reconcile_errors_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]))) / (sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster,controller,namespace) (rate(prometheus_operator_reconcile_operations_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]))) > 0.1 - for: {{ dig "PrometheusOperatorReconcileErrors" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusOperatorReconcileErrors" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusOperatorStatusUpdateErrors | default false) }} - - alert: PrometheusOperatorStatusUpdateErrors - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator | indent 8 }} -{{- end }} - description: '{{`{{`}} $value | humanizePercentage {{`}}`}} of status update operations failed for {{`{{`}} $labels.controller {{`}}`}} controller in {{`{{`}} $labels.namespace {{`}}`}} namespace.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/prometheusoperatorstatusupdateerrors - summary: Errors while updating objects status. - expr: (sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster,controller,namespace) (rate(prometheus_operator_status_update_errors_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]))) / (sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster,controller,namespace) (rate(prometheus_operator_status_update_operations_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]))) > 0.1 - for: {{ dig "PrometheusOperatorStatusUpdateErrors" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusOperatorStatusUpdateErrors" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusOperatorNodeLookupErrors | default false) }} - - alert: PrometheusOperatorNodeLookupErrors - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator | indent 8 }} -{{- end }} - description: Errors while reconciling Prometheus in {{`{{`}} $labels.namespace {{`}}`}} Namespace. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/prometheusoperatornodelookuperrors - summary: Errors while reconciling Prometheus. - expr: rate(prometheus_operator_node_address_lookup_errors_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]) > 0.1 - for: {{ dig "PrometheusOperatorNodeLookupErrors" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusOperatorNodeLookupErrors" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusOperatorNotReady | default false) }} - - alert: PrometheusOperatorNotReady - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator | indent 8 }} -{{- end }} - description: Prometheus operator in {{`{{`}} $labels.namespace {{`}}`}} namespace isn't ready to reconcile {{`{{`}} $labels.controller {{`}}`}} resources. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/prometheusoperatornotready - summary: Prometheus operator not ready - expr: min by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster,controller,namespace) (max_over_time(prometheus_operator_ready{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]) == 0) - for: {{ dig "PrometheusOperatorNotReady" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusOperatorNotReady" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusOperatorRejectedResources | default false) }} - - alert: PrometheusOperatorRejectedResources - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheusOperator | indent 8 }} -{{- end }} - description: Prometheus operator in {{`{{`}} $labels.namespace {{`}}`}} namespace rejected {{`{{`}} printf "%0.0f" $value {{`}}`}} {{`{{`}} $labels.controller {{`}}`}}/{{`{{`}} $labels.resource {{`}}`}} resources. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus-operator/prometheusoperatorrejectedresources - summary: Resources rejected by Prometheus operator - expr: min_over_time(prometheus_operator_managed_resources{state="rejected",job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]) > 0 - for: {{ dig "PrometheusOperatorRejectedResources" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusOperatorRejectedResources" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheusOperator }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/prometheus.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/prometheus.yaml deleted file mode 100644 index 9dfeb1f..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/prometheus.yaml +++ /dev/null @@ -1,707 +0,0 @@ -{{- /* -Generated from 'prometheus' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/a8ba97a150c75be42010c75d10b720c55e182f1a/manifests/prometheus-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.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: -{{- if not (.Values.defaultRules.disabled.PrometheusBadConfig | default false) }} - - alert: PrometheusBadConfig - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has failed to reload its configuration. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusbadconfig - 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: {{ dig "PrometheusBadConfig" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusBadConfig" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusSDRefreshFailure | default false) }} - - alert: PrometheusSDRefreshFailure - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has failed to refresh SD with mechanism {{`{{`}}$labels.mechanism{{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheussdrefreshfailure - summary: Failed Prometheus SD refresh. - expr: increase(prometheus_sd_refresh_failures_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[10m]) > 0 - for: {{ dig "PrometheusSDRefreshFailure" "for" "20m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusSDRefreshFailure" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusNotificationQueueRunningFull | default false) }} - - alert: PrometheusNotificationQueueRunningFull - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Alert notification queue of Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is running full. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusnotificationqueuerunningfull - 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: {{ dig "PrometheusNotificationQueueRunningFull" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusNotificationQueueRunningFull" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusErrorSendingAlertsToSomeAlertmanagers | default false) }} - - alert: PrometheusErrorSendingAlertsToSomeAlertmanagers - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: '{{`{{`}} printf "%.1f" $value {{`}}`}}% errors while sending alerts from Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} to Alertmanager {{`{{`}}$labels.alertmanager{{`}}`}}.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheuserrorsendingalertstosomealertmanagers - 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: {{ dig "PrometheusErrorSendingAlertsToSomeAlertmanagers" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusErrorSendingAlertsToSomeAlertmanagers" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusNotConnectedToAlertmanagers | default false) }} - - alert: PrometheusNotConnectedToAlertmanagers - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is not connected to any Alertmanagers. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusnotconnectedtoalertmanagers - 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: {{ dig "PrometheusNotConnectedToAlertmanagers" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusNotConnectedToAlertmanagers" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusTSDBReloadsFailing | default false) }} - - alert: PrometheusTSDBReloadsFailing - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has detected {{`{{`}}$value | humanize{{`}}`}} reload failures over the last 3h. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheustsdbreloadsfailing - summary: Prometheus has issues reloading blocks from disk. - expr: increase(prometheus_tsdb_reloads_failures_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[3h]) > 0 - for: {{ dig "PrometheusTSDBReloadsFailing" "for" "4h" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusTSDBReloadsFailing" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusTSDBCompactionsFailing | default false) }} - - alert: PrometheusTSDBCompactionsFailing - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has detected {{`{{`}}$value | humanize{{`}}`}} compaction failures over the last 3h. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheustsdbcompactionsfailing - summary: Prometheus has issues compacting blocks. - expr: increase(prometheus_tsdb_compactions_failed_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[3h]) > 0 - for: {{ dig "PrometheusTSDBCompactionsFailing" "for" "4h" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusTSDBCompactionsFailing" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusNotIngestingSamples | default false) }} - - alert: PrometheusNotIngestingSamples - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is not ingesting samples. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusnotingestingsamples - summary: Prometheus is not ingesting samples. - expr: |- - ( - sum without(type) (rate(prometheus_tsdb_head_samples_appended_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m])) <= 0 - and - ( - sum without(scrape_job) (prometheus_target_metadata_cache_entries{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}) > 0 - or - sum without(rule_group) (prometheus_rule_group_rules{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}) > 0 - ) - ) - for: {{ dig "PrometheusNotIngestingSamples" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusNotIngestingSamples" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusDuplicateTimestamps | default false) }} - - alert: PrometheusDuplicateTimestamps - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is dropping {{`{{`}} printf "%.4g" $value {{`}}`}} samples/s with different values but duplicated timestamp. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusduplicatetimestamps - summary: Prometheus is dropping samples with duplicate timestamps. - expr: rate(prometheus_target_scrapes_sample_duplicate_timestamp_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0 - for: {{ dig "PrometheusDuplicateTimestamps" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusDuplicateTimestamps" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusOutOfOrderTimestamps | default false) }} - - alert: PrometheusOutOfOrderTimestamps - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is dropping {{`{{`}} printf "%.4g" $value {{`}}`}} samples/s with timestamps arriving out of order. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusoutofordertimestamps - 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: {{ dig "PrometheusOutOfOrderTimestamps" "for" "10m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusOutOfOrderTimestamps" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusRemoteStorageFailures | default false) }} - - alert: PrometheusRemoteStorageFailures - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} failed to send {{`{{`}} printf "%.1f" $value {{`}}`}}% of the samples to {{`{{`}} $labels.remote_name{{`}}`}}:{{`{{`}} $labels.url {{`}}`}} - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusremotestoragefailures - summary: Prometheus fails to send samples to remote storage. - expr: |- - ( - (rate(prometheus_remote_storage_failed_samples_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) or rate(prometheus_remote_storage_samples_failed_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m])) - / - ( - (rate(prometheus_remote_storage_failed_samples_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) or rate(prometheus_remote_storage_samples_failed_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m])) - + - (rate(prometheus_remote_storage_succeeded_samples_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) or rate(prometheus_remote_storage_samples_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m])) - ) - ) - * 100 - > 1 - for: {{ dig "PrometheusRemoteStorageFailures" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusRemoteStorageFailures" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusRemoteWriteBehind | default false) }} - - alert: PrometheusRemoteWriteBehind - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} remote write is {{`{{`}} printf "%.1f" $value {{`}}`}}s behind for {{`{{`}} $labels.remote_name{{`}}`}}:{{`{{`}} $labels.url {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusremotewritebehind - 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]) - - ignoring(remote_name, url) group_right - max_over_time(prometheus_remote_storage_queue_highest_sent_timestamp_seconds{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) - ) - > 120 - for: {{ dig "PrometheusRemoteWriteBehind" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusRemoteWriteBehind" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusRemoteWriteDesiredShards | default false) }} - - alert: PrometheusRemoteWriteDesiredShards - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - 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 {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusremotewritedesiredshards - 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: {{ dig "PrometheusRemoteWriteDesiredShards" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusRemoteWriteDesiredShards" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusRuleFailures | default false) }} - - alert: PrometheusRuleFailures - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has failed to evaluate {{`{{`}} printf "%.0f" $value {{`}}`}} rules in the last 5m. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusrulefailures - summary: Prometheus is failing rule evaluations. - expr: increase(prometheus_rule_evaluation_failures_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0 - for: {{ dig "PrometheusRuleFailures" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusRuleFailures" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusMissingRuleEvaluations | default false) }} - - alert: PrometheusMissingRuleEvaluations - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has missed {{`{{`}} printf "%.0f" $value {{`}}`}} rule group evaluations in the last 5m. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusmissingruleevaluations - 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: {{ dig "PrometheusMissingRuleEvaluations" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusMissingRuleEvaluations" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusTargetLimitHit | default false) }} - - alert: PrometheusTargetLimitHit - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has dropped {{`{{`}} printf "%.0f" $value {{`}}`}} targets because the number of targets exceeded the configured target_limit. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheustargetlimithit - 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: {{ dig "PrometheusTargetLimitHit" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusTargetLimitHit" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusLabelLimitHit | default false) }} - - alert: PrometheusLabelLimitHit - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has dropped {{`{{`}} printf "%.0f" $value {{`}}`}} targets because some samples exceeded the configured label_limit, label_name_length_limit or label_value_length_limit. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheuslabellimithit - summary: Prometheus has dropped targets because some scrape configs have exceeded the labels limit. - expr: increase(prometheus_target_scrape_pool_exceeded_label_limits_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0 - for: {{ dig "PrometheusLabelLimitHit" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusLabelLimitHit" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusScrapeBodySizeLimitHit | default false) }} - - alert: PrometheusScrapeBodySizeLimitHit - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has failed {{`{{`}} printf "%.0f" $value {{`}}`}} scrapes in the last 5m because some targets exceeded the configured body_size_limit. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusscrapebodysizelimithit - summary: Prometheus has dropped some targets that exceeded body size limit. - expr: increase(prometheus_target_scrapes_exceeded_body_size_limit_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0 - for: {{ dig "PrometheusScrapeBodySizeLimitHit" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusScrapeBodySizeLimitHit" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusScrapeSampleLimitHit | default false) }} - - alert: PrometheusScrapeSampleLimitHit - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has failed {{`{{`}} printf "%.0f" $value {{`}}`}} scrapes in the last 5m because some targets exceeded the configured sample_limit. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheusscrapesamplelimithit - summary: Prometheus has failed scrapes that have exceeded the configured sample limit. - expr: increase(prometheus_target_scrapes_exceeded_sample_limit_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0 - for: {{ dig "PrometheusScrapeSampleLimitHit" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusScrapeSampleLimitHit" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusTargetSyncFailure | default false) }} - - alert: PrometheusTargetSyncFailure - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: '{{`{{`}} printf "%.0f" $value {{`}}`}} targets in Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} have failed to sync because invalid configuration was supplied.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheustargetsyncfailure - summary: Prometheus has failed to sync targets. - expr: increase(prometheus_target_sync_failed_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[30m]) > 0 - for: {{ dig "PrometheusTargetSyncFailure" "for" "5m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusTargetSyncFailure" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusHighQueryLoad | default false) }} - - alert: PrometheusHighQueryLoad - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} query API has less than 20% available capacity in its query engine for the last 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheushighqueryload - summary: Prometheus is reaching its maximum capacity serving concurrent requests. - expr: avg_over_time(prometheus_engine_queries{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) / max_over_time(prometheus_engine_queries_concurrent_max{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0.8 - for: {{ dig "PrometheusHighQueryLoad" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusHighQueryLoad" "severity" "warning" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- if not (.Values.defaultRules.disabled.PrometheusErrorSendingAlertsToAnyAlertmanager | default false) }} - - alert: PrometheusErrorSendingAlertsToAnyAlertmanager - annotations: -{{- if .Values.defaultRules.additionalRuleAnnotations }} -{{ toYaml .Values.defaultRules.additionalRuleAnnotations | indent 8 }} -{{- end }} -{{- if .Values.defaultRules.additionalRuleGroupAnnotations.prometheus }} -{{ toYaml .Values.defaultRules.additionalRuleGroupAnnotations.prometheus | indent 8 }} -{{- end }} - description: '{{`{{`}} printf "%.1f" $value {{`}}`}}% minimum errors while sending alerts from Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} to any Alertmanager.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}/prometheus/prometheuserrorsendingalertstoanyalertmanager - 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 }}",alertmanager!~``}[5m]) - / - rate(prometheus_notifications_sent_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}",alertmanager!~``}[5m]) - ) - * 100 - > 3 - for: {{ dig "PrometheusErrorSendingAlertsToAnyAlertmanager" "for" "15m" .Values.customRules }} - {{- with .Values.defaultRules.keepFiringFor }} - keep_firing_for: "{{ . }}" - {{- end }} - labels: - severity: {{ dig "PrometheusErrorSendingAlertsToAnyAlertmanager" "severity" "critical" .Values.customRules }} - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.prometheus }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/windows.node.rules.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/windows.node.rules.yaml deleted file mode 100644 index 7c25553..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/windows.node.rules.yaml +++ /dev/null @@ -1,301 +0,0 @@ -{{- /* -Generated from 'windows.node.rules' group from https://github.com/kubernetes-monitoring/kubernetes-mixin.git -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.windowsMonitoring.enabled .Values.defaultRules.rules.windows }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "windows.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: windows.node.rules - rules: - - expr: |- - count by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) ( - windows_system_system_up_time{job="windows-exporter"} - ) - record: node:windows_node:sum - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - count by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance) (sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance, core) ( - windows_cpu_time_total{job="windows-exporter"} - )) - record: node:windows_node_num_cpu:sum - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: 1 - avg by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (rate(windows_cpu_time_total{job="windows-exporter",mode="idle"}[1m])) - record: :windows_node_cpu_utilisation:avg1m - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - 1 - avg by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance) ( - rate(windows_cpu_time_total{job="windows-exporter",mode="idle"}[1m]) - ) - record: node:windows_node_cpu_utilisation:avg1m - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - 1 - - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (windows_memory_available_bytes{job="windows-exporter"}) - / - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (windows_os_visible_memory_bytes{job="windows-exporter"}) - record: ':windows_node_memory_utilisation:' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (windows_memory_available_bytes{job="windows-exporter"} + windows_memory_cache_bytes{job="windows-exporter"}) - record: :windows_node_memory_MemFreeCached_bytes:sum - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: (windows_memory_cache_bytes{job="windows-exporter"} + windows_memory_modified_page_list_bytes{job="windows-exporter"} + windows_memory_standby_cache_core_bytes{job="windows-exporter"} + windows_memory_standby_cache_normal_priority_bytes{job="windows-exporter"} + windows_memory_standby_cache_reserve_bytes{job="windows-exporter"}) - record: node:windows_node_memory_totalCached_bytes:sum - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (windows_os_visible_memory_bytes{job="windows-exporter"}) - record: :windows_node_memory_MemTotal_bytes:sum - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance) ( - (windows_memory_available_bytes{job="windows-exporter"}) - ) - record: node:windows_node_memory_bytes_available:sum - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance) ( - windows_os_visible_memory_bytes{job="windows-exporter"} - ) - record: node:windows_node_memory_bytes_total:sum - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - (node:windows_node_memory_bytes_total:sum - node:windows_node_memory_bytes_available:sum) - / - scalar(sum(node:windows_node_memory_bytes_total:sum)) - record: node:windows_node_memory_utilisation:ratio - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: 1 - (node:windows_node_memory_bytes_available:sum / node:windows_node_memory_bytes_total:sum) - record: 'node:windows_node_memory_utilisation:' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: irate(windows_memory_swap_page_operations_total{job="windows-exporter"}[5m]) - record: node:windows_node_memory_swap_io_pages:irate - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - avg by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (irate(windows_logical_disk_read_seconds_total{job="windows-exporter"}[1m]) + - irate(windows_logical_disk_write_seconds_total{job="windows-exporter"}[1m]) - ) - record: :windows_node_disk_utilisation:avg_irate - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - avg by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance) ( - (irate(windows_logical_disk_read_seconds_total{job="windows-exporter"}[1m]) + - irate(windows_logical_disk_write_seconds_total{job="windows-exporter"}[1m])) - ) - record: node:windows_node_disk_utilisation:avg_irate - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster,instance,volume)( - (windows_logical_disk_size_bytes{job="windows-exporter"} - - windows_logical_disk_free_bytes{job="windows-exporter"}) - / windows_logical_disk_size_bytes{job="windows-exporter"} - ) - record: 'node:windows_node_filesystem_usage:' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance, volume) (windows_logical_disk_free_bytes{job="windows-exporter"} / windows_logical_disk_size_bytes{job="windows-exporter"}) - record: 'node:windows_node_filesystem_avail:' - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (irate(windows_net_bytes_total{job="windows-exporter"}[1m])) - record: :windows_node_net_utilisation:sum_irate - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance) ( - (irate(windows_net_bytes_total{job="windows-exporter"}[1m])) - ) - record: node:windows_node_net_utilisation:sum_irate - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (irate(windows_net_packets_received_discarded_total{job="windows-exporter"}[1m])) + - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster) (irate(windows_net_packets_outbound_discarded_total{job="windows-exporter"}[1m])) - record: :windows_node_net_saturation:sum_irate - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, instance) ( - (irate(windows_net_packets_received_discarded_total{job="windows-exporter"}[1m]) + - irate(windows_net_packets_outbound_discarded_total{job="windows-exporter"}[1m])) - ) - record: node:windows_node_net_saturation:sum_irate - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/windows.pod.rules.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/windows.pod.rules.yaml deleted file mode 100644 index 86340b5..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/rules-1.14/windows.pod.rules.yaml +++ /dev/null @@ -1,158 +0,0 @@ -{{- /* -Generated from 'windows.pod.rules' group from https://github.com/kubernetes-monitoring/kubernetes-mixin.git -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.windowsMonitoring.enabled .Values.defaultRules.rules.windows }} -{{- $kubeStateMetricsJob := include "kube-prometheus-stack-kube-state-metrics.name" . }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "windows.pod.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: windows.pod.rules - rules: - - expr: windows_container_available{job="windows-exporter", container_id != ""} * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="{{ $kubeStateMetricsJob }}", container_id != ""}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}container, container_id, pod, namespace, cluster) - record: windows_pod_container_available - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: windows_container_cpu_usage_seconds_total{job="windows-exporter", container_id != ""} * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="{{ $kubeStateMetricsJob }}", container_id != ""}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}container, container_id, pod, namespace, cluster) - record: windows_container_total_runtime - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: windows_container_memory_usage_commit_bytes{job="windows-exporter", container_id != ""} * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="{{ $kubeStateMetricsJob }}", container_id != ""}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}container, container_id, pod, namespace, cluster) - record: windows_container_memory_usage - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: windows_container_memory_usage_private_working_set_bytes{job="windows-exporter", container_id != ""} * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="{{ $kubeStateMetricsJob }}", container_id != ""}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}container, container_id, pod, namespace, cluster) - record: windows_container_private_working_set_usage - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: windows_container_network_receive_bytes_total{job="windows-exporter", container_id != ""} * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="{{ $kubeStateMetricsJob }}", container_id != ""}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}container, container_id, pod, namespace, cluster) - record: windows_container_network_received_bytes_total - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: windows_container_network_transmit_bytes_total{job="windows-exporter", container_id != ""} * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="{{ $kubeStateMetricsJob }}", container_id != ""}) by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}container, container_id, pod, namespace, cluster) - record: windows_container_network_transmitted_bytes_total - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod, container) ( - kube_pod_container_resource_requests{resource="memory",job="{{ $kubeStateMetricsJob }}"} - ) * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}container,pod,namespace,cluster) (windows_pod_container_available) - record: kube_pod_windows_container_resource_memory_request - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: kube_pod_container_resource_limits{resource="memory",job="{{ $kubeStateMetricsJob }}"} * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}container,pod,namespace,cluster) (windows_pod_container_available) - record: kube_pod_windows_container_resource_memory_limit - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - max by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod, container) ( - kube_pod_container_resource_requests{resource="cpu",job="{{ $kubeStateMetricsJob }}"} - ) * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}container,pod,namespace,cluster) (windows_pod_container_available) - record: kube_pod_windows_container_resource_cpu_cores_request - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: kube_pod_container_resource_limits{resource="cpu",job="{{ $kubeStateMetricsJob }}"} * on ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}container,pod,namespace,cluster) (windows_pod_container_available) - record: kube_pod_windows_container_resource_cpu_cores_limit - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} - - expr: |- - sum by ({{ range $.Values.defaultRules.additionalAggregationLabels }}{{ . }},{{ end }}cluster, namespace, pod, container) ( - rate(windows_container_total_runtime{}[5m]) - ) - record: namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate - {{- if or .Values.defaultRules.additionalRuleLabels .Values.defaultRules.additionalRuleGroupLabels.windows }} - labels: - {{- with .Values.defaultRules.additionalRuleLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.defaultRules.additionalRuleGroupLabels.windows }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/secret.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/secret.yaml deleted file mode 100644 index e4a1e73..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/secret.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.prometheusSpec.thanos .Values.prometheus.prometheusSpec.thanos.objectStorageConfig}} -{{- if and .Values.prometheus.prometheusSpec.thanos.objectStorageConfig.secret (not .Values.prometheus.prometheusSpec.thanos.objectStorageConfig.existingSecret) }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus - app.kubernetes.io/component: prometheus -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -data: - object-storage-configs.yaml: {{ toYaml .Values.prometheus.prometheusSpec.thanos.objectStorageConfig.secret | b64enc | quote }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/service.yaml deleted file mode 100644 index d61b9d6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/service.yaml +++ /dev/null @@ -1,80 +0,0 @@ -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- 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 }} -{{- if ne .Values.prometheus.service.type "ClusterIP" }} - externalTrafficPolicy: {{ .Values.prometheus.service.externalTrafficPolicy }} -{{- 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 }} - - name: reloader-web - {{- if semverCompare "> 1.20.0-0" $kubeTargetVersion }} - appProtocol: http - {{- end }} - port: {{ .Values.prometheus.service.reloaderWebPort }} - targetPort: reloader-web - {{- 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 }} - publishNotReadyAddresses: {{ .Values.prometheus.service.publishNotReadyAddresses }} - selector: - {{- if .Values.prometheus.agentMode }} - app.kubernetes.io/name: prometheus-agent - {{- else }} - app.kubernetes.io/name: prometheus - {{- end }} - operator.prometheus.io/name: {{ template "kube-prometheus-stack.prometheus.crname" . }} -{{- if .Values.prometheus.service.sessionAffinity }} - sessionAffinity: {{ .Values.prometheus.service.sessionAffinity }} -{{- end }} -{{- if eq .Values.prometheus.service.sessionAffinity "ClientIP" }} - sessionAffinityConfig: - clientIP: - timeoutSeconds: {{ .Values.prometheus.service.sessionAffinityConfig.clientIP.timeoutSeconds }} -{{- end }} - type: "{{ .Values.prometheus.service.type }}" -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/serviceThanosSidecar.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/serviceThanosSidecar.yaml deleted file mode 100644 index 15b89c8..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/serviceThanosSidecar.yaml +++ /dev/null @@ -1,39 +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 }} -{{- if ne .Values.prometheus.thanosService.type "ClusterIP" }} - externalTrafficPolicy: {{ .Values.prometheus.thanosService.externalTrafficPolicy }} -{{- end }} - 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 }} - - name: {{ .Values.prometheus.thanosService.httpPortName }} - port: {{ .Values.prometheus.thanosService.httpPort }} - targetPort: {{ .Values.prometheus.thanosService.targetHttpPort }} - {{- if eq .Values.prometheus.thanosService.type "NodePort" }} - nodePort: {{ .Values.prometheus.thanosService.httpNodePort }} - {{- end }} - selector: - app.kubernetes.io/name: prometheus - operator.prometheus.io/name: {{ template "kube-prometheus-stack.prometheus.crname" . }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/serviceThanosSidecarExternal.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/serviceThanosSidecarExternal.yaml deleted file mode 100644 index 453eed7..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/serviceThanosSidecarExternal.yaml +++ /dev/null @@ -1,46 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.thanosServiceExternal.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-thanos-external - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.prometheus.thanosServiceExternal.labels }} -{{ toYaml .Values.prometheus.thanosServiceExternal.labels | indent 4 }} -{{- end }} -{{- if .Values.prometheus.thanosServiceExternal.annotations }} - annotations: -{{ toYaml .Values.prometheus.thanosServiceExternal.annotations | indent 4 }} -{{- end }} -spec: - type: {{ .Values.prometheus.thanosServiceExternal.type }} -{{- if .Values.prometheus.thanosServiceExternal.loadBalancerIP }} - loadBalancerIP: {{ .Values.prometheus.thanosServiceExternal.loadBalancerIP }} -{{- end }} -{{- if .Values.prometheus.thanosServiceExternal.loadBalancerSourceRanges }} - loadBalancerSourceRanges: - {{- range $cidr := .Values.prometheus.thanosServiceExternal.loadBalancerSourceRanges }} - - {{ $cidr }} - {{- end }} -{{- end }} -{{- if ne .Values.prometheus.thanosServiceExternal.type "ClusterIP" }} - externalTrafficPolicy: {{ .Values.prometheus.thanosServiceExternal.externalTrafficPolicy }} -{{- end }} - ports: - - name: {{ .Values.prometheus.thanosServiceExternal.portName }} - port: {{ .Values.prometheus.thanosServiceExternal.port }} - targetPort: {{ .Values.prometheus.thanosServiceExternal.targetPort }} - {{- if eq .Values.prometheus.thanosServiceExternal.type "NodePort" }} - nodePort: {{ .Values.prometheus.thanosServiceExternal.nodePort }} - {{- end }} - - name: {{ .Values.prometheus.thanosServiceExternal.httpPortName }} - port: {{ .Values.prometheus.thanosServiceExternal.httpPort }} - targetPort: {{ .Values.prometheus.thanosServiceExternal.targetHttpPort }} - {{- if eq .Values.prometheus.thanosServiceExternal.type "NodePort" }} - nodePort: {{ .Values.prometheus.thanosServiceExternal.httpNodePort }} - {{- end }} - selector: - app.kubernetes.io/name: prometheus - operator.prometheus.io/name: {{ template "kube-prometheus-stack.prometheus.crname" . }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/serviceaccount.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/serviceaccount.yaml deleted file mode 100644 index e97b989..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/serviceaccount.yaml +++ /dev/null @@ -1,21 +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 - app.kubernetes.io/name: {{ template "kube-prometheus-stack.name" . }}-prometheus - app.kubernetes.io/component: prometheus -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.prometheus.serviceAccount.annotations }} - annotations: -{{ toYaml .Values.prometheus.serviceAccount.annotations | indent 4 }} -{{- end }} -automountServiceAccountToken: {{ .Values.prometheus.serviceAccount.automountServiceAccountToken }} -{{- if .Values.global.imagePullSecrets }} -imagePullSecrets: -{{ include "kube-prometheus-stack.imagePullSecrets" . | trim | indent 2 }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/servicemonitor.yaml deleted file mode 100644 index a36f3e3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/servicemonitor.yaml +++ /dev/null @@ -1,97 +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 }} -{{- with .Values.prometheus.serviceMonitor.additionalLabels }} -{{- toYaml . | nindent 4 }} -{{- end }} -spec: - {{- include "servicemonitor.scrapeLimits" .Values.prometheus.serviceMonitor | nindent 2 }} - 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" - metricRelabelings: - {{- if .Values.prometheus.serviceMonitor.metricRelabelings }} - {{- tpl (toYaml .Values.prometheus.serviceMonitor.metricRelabelings | nindent 6) . }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName}} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} - {{- if .Values.prometheus.serviceMonitor.relabelings }} - relabelings: {{- toYaml .Values.prometheus.serviceMonitor.relabelings | nindent 6 }} - {{- end }} - - port: reloader-web - {{- 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 }} - path: "/metrics" - {{- if .Values.prometheus.serviceMonitor.metricRelabelings }} - metricRelabelings: {{- tpl (toYaml .Values.prometheus.serviceMonitor.metricRelabelings | nindent 6) . }} - {{- end }} - {{- if .Values.prometheus.serviceMonitor.relabelings }} - relabelings: {{- toYaml .Values.prometheus.serviceMonitor.relabelings | nindent 6 }} - {{- end }} - {{- range .Values.prometheus.serviceMonitor.additionalEndpoints }} - - port: {{ .port }} - {{- if or $.Values.prometheus.serviceMonitor.interval .interval }} - interval: {{ default $.Values.prometheus.serviceMonitor.interval .interval }} - {{- end }} - {{- if or $.Values.prometheus.serviceMonitor.proxyUrl .proxyUrl }} - proxyUrl: {{ default $.Values.prometheus.serviceMonitor.proxyUrl .proxyUrl }} - {{- end }} - {{- if or $.Values.prometheus.serviceMonitor.scheme .scheme }} - scheme: {{ default $.Values.prometheus.serviceMonitor.scheme .scheme }} - {{- end }} - {{- if or $.Values.prometheus.serviceMonitor.bearerTokenFile .bearerTokenFile }} - bearerTokenFile: {{ default $.Values.prometheus.serviceMonitor.bearerTokenFile .bearerTokenFile }} - {{- end }} - {{- if or $.Values.prometheus.serviceMonitor.tlsConfig .tlsConfig }} - tlsConfig: {{- default $.Values.prometheus.serviceMonitor.tlsConfig .tlsConfig | toYaml | nindent 6 }} - {{- end }} - path: {{ .path }} - {{- if or $.Values.prometheus.serviceMonitor.metricRelabelings .metricRelabelings }} - metricRelabelings: {{- tpl (default $.Values.prometheus.serviceMonitor.metricRelabelings .metricRelabelings | toYaml | nindent 6) . }} - {{- end }} - {{- if or $.Values.prometheus.serviceMonitor.relabelings .relabelings }} - relabelings: {{- default $.Values.prometheus.serviceMonitor.relabelings .relabelings | toYaml | nindent 6 }} - {{- end }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/servicemonitorThanosSidecar.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/servicemonitorThanosSidecar.yaml deleted file mode 100644 index 0f70aab..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/servicemonitorThanosSidecar.yaml +++ /dev/null @@ -1,55 +0,0 @@ -{{- if and .Values.prometheus.thanosService.enabled .Values.prometheus.thanosServiceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-thanos-sidecar - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-thanos-sidecar -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- with .Values.prometheus.thanosServiceMonitor.additionalLabels }} -{{- toYaml . | nindent 4 }} -{{- end }} -spec: - {{- include "servicemonitor.scrapeLimits" .Values.prometheus.thanosServiceMonitor | nindent 2 }} - selector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-thanos-discovery - release: {{ $.Release.Name | quote }} - namespaceSelector: - matchNames: - - {{ printf "%s" (include "kube-prometheus-stack.namespace" .) | quote }} - endpoints: - - port: {{ .Values.prometheus.thanosService.httpPortName }} - {{- if .Values.prometheus.thanosServiceMonitor.interval }} - interval: {{ .Values.prometheus.thanosServiceMonitor.interval }} - {{- end }} - {{- if .Values.prometheus.thanosServiceMonitor.scheme }} - scheme: {{ .Values.prometheus.thanosServiceMonitor.scheme }} - {{- end }} - {{- if .Values.prometheus.thanosServiceMonitor.tlsConfig }} - tlsConfig: {{ toYaml .Values.prometheus.thanosServiceMonitor.tlsConfig | nindent 6 }} - {{- end }} - {{- if .Values.prometheus.thanosServiceMonitor.bearerTokenFile }} - bearerTokenFile: {{ .Values.prometheus.thanosServiceMonitor.bearerTokenFile }} - {{- end }} - path: "/metrics" - metricRelabelings: - {{- if .Values.prometheus.thanosServiceMonitor.metricRelabelings}} - {{ tpl (toYaml .Values.prometheus.thanosServiceMonitor.metricRelabelings | indent 6) . }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName}} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} -{{- if .Values.prometheus.thanosServiceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.prometheus.thanosServiceMonitor.relabelings | indent 6 }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/servicemonitors.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/servicemonitors.yaml deleted file mode 100644 index a7a301b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/servicemonitors.yaml +++ /dev/null @@ -1,47 +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: - {{- include "servicemonitor.scrapeLimits" . | nindent 6 }} - 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 }} - {{- if .metricRelabelings }} - metricRelabelings: -{{ toYaml .metricRelabelings | indent 8 }} - {{- end }} - {{- if .relabelings }} - relabelings: -{{ toYaml .relabelings | indent 8 }} - {{- end }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/serviceperreplica.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/serviceperreplica.yaml deleted file mode 100644 index 4bc7f7b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/prometheus/serviceperreplica.yaml +++ /dev/null @@ -1,54 +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 }} - {{- if ne $serviceValues.type "ClusterIP" }} - externalTrafficPolicy: {{ $serviceValues.externalTrafficPolicy }} - {{- end }} - ports: - - name: {{ $.Values.prometheus.prometheusSpec.portName }} - {{- if eq $serviceValues.type "NodePort" }} - nodePort: {{ $serviceValues.nodePort }} - {{- end }} - port: {{ $serviceValues.port }} - targetPort: {{ $serviceValues.targetPort }} - selector: - {{- if $.Values.prometheus.agentMode }} - app.kubernetes.io/name: prometheus-agent - statefulset.kubernetes.io/pod-name: prom-agent-{{ include "kube-prometheus-stack.prometheus.crname" $ }}-{{ $i }} - {{- else }} - app.kubernetes.io/name: prometheus - statefulset.kubernetes.io/pod-name: prometheus-{{ include "kube-prometheus-stack.prometheus.crname" $ }}-{{ $i }} - {{- end }} - operator.prometheus.io/name: {{ template "kube-prometheus-stack.prometheus.crname" $ }} - type: "{{ $serviceValues.type }}" -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/clusterrole.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/clusterrole.yaml deleted file mode 100644 index 56ca9f5..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/clusterrole.yaml +++ /dev/null @@ -1,135 +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: -- 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 }}" -{{- if .Values.grafana.enabled }} - - "http:{{ include "call-nested" (list . "grafana" "grafana.fullname") }}:{{ .Values.grafana.service.port }}" - - "https:{{ include "call-nested" (list . "grafana" "grafana.fullname") }}:{{ .Values.grafana.service.port }}" -{{- end }} - verbs: - - 'get' - - 'create' -- apiGroups: - - "" - resourceNames: - - {{ template "kube-prometheus-stack.fullname" . }}-prometheus - - {{ template "kube-prometheus-stack.fullname" . }}-alertmanager -{{- if .Values.grafana.enabled }} - - {{ include "call-nested" (list . "grafana" "grafana.fullname") }} -{{- end }} - resources: - - endpoints - verbs: - - list -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/config-role.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/config-role.yaml deleted file mode 100644 index f48ffc8..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboard-role.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboard-role.yaml deleted file mode 100644 index d2f8197..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/addons/ingress-nginx-dashboard.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/addons/ingress-nginx-dashboard.yaml deleted file mode 100644 index 7b51a0b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/cluster-dashboards.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/cluster-dashboards.yaml deleted file mode 100644 index d73b257..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/default-dashboard.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/default-dashboard.yaml deleted file mode 100644 index 8865efa..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/fleet-dashboards.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/fleet-dashboards.yaml deleted file mode 100644 index 9b05cea..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/fleet-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-fleet-dashboards - 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/fleet/*").AsConfig | indent 2 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/k8s-dashboards.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/k8s-dashboards.yaml deleted file mode 100644 index 2afae10..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/k8s-dashboards.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- $files := (.Files.Glob "files/rancher/k8s/*").AsConfig }} -{{- $filesDict := (fromYaml $files) }} -{{- if not (include "exporter.kubeEtcd.enabled" .) }} -{{- $filesDict = (unset $filesDict "rancher-etcd-nodes.json") -}} -{{- $filesDict = (unset $filesDict "rancher-etcd.json") -}} -{{- end }} -{{- if not (include "exporter.kubeControllerManager.enabled" .) }} -{{- $filesDict = (unset $filesDict "rancher-k8s-components-nodes.json") -}} -{{- $filesDict = (unset $filesDict "rancher-k8s-components.json") -}} -{{- else }} -{{- $_ := (set $filesDict "rancher-k8s-components-nodes.json" (get $filesDict "rancher-k8s-components-nodes.json" | replace "kube-controller-manager" (include "exporter.kubeControllerManager.jobName" .))) -}} -{{- $_ := (set $filesDict "rancher-k8s-components.json" (get $filesDict "rancher-k8s-components.json" | replace "kube-controller-manager" (include "exporter.kubeControllerManager.jobName" .))) -}} -{{- end }} -{{ $files = (toYaml $filesDict) }} -{{- 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 | indent 2 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/nodes-dashboards.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/nodes-dashboards.yaml deleted file mode 100644 index 172c36e..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/performance-dashboards.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/performance-dashboards.yaml deleted file mode 100644 index 19836ec..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/performance-dashboards.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- $selector := (include "rancher.serviceMonitor.selector" .) -}} -{{- if and .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled .Values.rancherMonitoring.enabled $selector }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: rancher-default-dashboards-performance-debugging - 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/performance/*").AsConfig | indent 2 }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/pods-dashboards.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/pods-dashboards.yaml deleted file mode 100644 index 940f188..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/workload-dashboards.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/dashboards/rancher/workload-dashboards.yaml deleted file mode 100644 index d146dac..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/exporters/fleet/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/exporters/fleet/servicemonitor.yaml deleted file mode 100644 index 90d24c2..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/exporters/fleet/servicemonitor.yaml +++ /dev/null @@ -1,53 +0,0 @@ -{{- if .Values.rancherMonitoring.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - labels: {{ include "kube-prometheus-stack.labels" . | nindent 4 }} - name: monitoring-fleet-controller - namespace: cattle-fleet-system -spec: - endpoints: - - port: metrics - metricRelabelings: - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName}} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} - jobLabel: fleet - selector: - matchLabels: - app: fleet-controller -{{- end }} ---- -{{- if .Values.rancherMonitoring.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - labels: {{ include "kube-prometheus-stack.labels" . | nindent 4 }} - name: monitoring-gitops-controller - namespace: cattle-fleet-system -spec: - endpoints: - - port: metrics - metricRelabelings: - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName}} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} - jobLabel: gitops - selector: - matchLabels: - app: gitjob -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/exporters/ingress-nginx/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/exporters/ingress-nginx/service.yaml deleted file mode 100644 index 53a9ad6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/exporters/ingress-nginx/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/exporters/ingress-nginx/servicemonitor.yaml deleted file mode 100644 index b0f92e6..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/exporters/ingress-nginx/servicemonitor.yaml +++ /dev/null @@ -1,49 +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 }} - {{- if .Values.ingressNginx.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.ingressNginx.serviceMonitor.proxyUrl}} - {{- end }} - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - metricRelabelings: - {{- if .Values.ingressNginx.serviceMonitor.metricRelabelings }} - {{ tpl (toYaml .Values.ingressNginx.serviceMonitor.metricRelabelings | indent 4) . }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName}} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} -{{- if .Values.ingressNginx.serviceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.ingressNginx.serviceMonitor.relabelings | indent 4 }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/exporters/rancher/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/exporters/rancher/servicemonitor.yaml deleted file mode 100644 index 1fba8f2..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/exporters/rancher/servicemonitor.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- $selector := (include "rancher.serviceMonitor.selector" .) -}} -{{- if and .Values.rancherMonitoring.enabled $selector }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - labels: {{ include "kube-prometheus-stack.labels" . | nindent 4 }} - name: rancher - namespace: cattle-system -spec: - endpoints: - - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - port: http - tlsConfig: - caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - insecureSkipVerify: true - serverName: rancher - metricRelabelings: - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName}} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} - jobLabel: rancher -{{- if .Values.rancherMonitoring.namespaceSelector }} - namespaceSelector: {{ .Values.rancherMonitoring.namespaceSelector | toYaml | nindent 4 }} -{{- end }} - selector: {{ include "rancher.serviceMonitor.selector" . | nindent 4 }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-rancher-metrics -rules: -- apiGroups: - - management.cattle.io - resources: - - ranchermetrics - verbs: - - get ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-rancher-metrics -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "kube-prometheus-stack.fullname" . }}-rancher-metrics -subjects: - - kind: ServiceAccount - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/hardened.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/hardened.yaml deleted file mode 100644 index f9a6615..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/hardened.yaml +++ /dev/null @@ -1,147 +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'] -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ .Chart.Name }}-patch-sa -{{- end }} ---- -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 ---- -{{- if .Values.global.cattle.psp.enabled }} -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 }} -{{- end }} ---- -{{- if .Values.hardened.k3s.networkPolicy.enabled }} -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: rancher-monitoring-coredns-allow-all - namespace: kube-system -spec: - ingress: - - {} - egress: - - {} - policyTypes: - - Ingress - - Egress - podSelector: - matchLabels: - k8s-app: kube-dns -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/upgrade/configmap.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/upgrade/configmap.yaml deleted file mode 100644 index 53cb898..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/upgrade/configmap.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Values.upgrade.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - namespace: {{ template "kube-prometheus-stack.namespace" . }} - annotations: - "helm.sh/hook": pre-upgrade, pre-rollback - "helm.sh/hook-delete-policy": before-hook-creation, hook-succeeded, hook-failed - "helm.sh/hook-weight": "0" -data: -{{ (.Files.Glob "files/upgrade/scripts/*").AsConfig | indent 2 }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/upgrade/job.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/upgrade/job.yaml deleted file mode 100644 index 8f27717..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/upgrade/job.yaml +++ /dev/null @@ -1,46 +0,0 @@ -{{- if .Values.upgrade.enabled }} -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - annotations: - "helm.sh/hook": pre-upgrade, pre-rollback - "helm.sh/hook-delete-policy": before-hook-creation, hook-succeeded, hook-failed - "helm.sh/hook-weight": "2" -spec: - template: - metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - labels: - app: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - spec: - serviceAccountName: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - securityContext: - runAsNonRoot: false - runAsUser: 0 - restartPolicy: Never - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} - containers: - - name: run-scripts - image: {{ template "system_default_registry" . }}{{ .Values.upgrade.image.repository }}:{{ .Values.upgrade.image.tag }} - imagePullPolicy: {{ $.Values.global.kubectl.pullPolicy }} - command: - - /bin/sh - - -c - - > - for s in $(find /etc/scripts -type f); do - echo "Running $s..."; - cat $s | bash - done; - volumeMounts: - - name: upgrade - mountPath: /etc/scripts - volumes: - - name: upgrade - configMap: - name: {{ template "kube-prometheus-stack.fullname" . }}-upgrade -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/upgrade/rbac.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/upgrade/rbac.yaml deleted file mode 100644 index e929a19..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/rancher-monitoring/upgrade/rbac.yaml +++ /dev/null @@ -1,131 +0,0 @@ -{{- if .Values.upgrade.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - annotations: - "helm.sh/hook": pre-upgrade, pre-rollback - "helm.sh/hook-delete-policy": before-hook-creation, hook-succeeded - "helm.sh/hook-weight": "1" -rules: -- apiGroups: - - apps - resources: - - deployments - - daemonsets - - statefulsets - verbs: - - 'list' - - 'delete' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - annotations: - "helm.sh/hook": pre-upgrade, pre-rollback - "helm.sh/hook-delete-policy": before-hook-creation, hook-succeeded, hook-failed - "helm.sh/hook-weight": "1" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "kube-prometheus-stack.fullname" . }}-upgrade -subjects: -- kind: ServiceAccount - name: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - namespace: {{ template "kube-prometheus-stack.namespace" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - labels: - app: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - annotations: - "helm.sh/hook": pre-upgrade, pre-rollback - "helm.sh/hook-delete-policy": before-hook-creation, hook-succeeded, hook-failed - "helm.sh/hook-weight": "1" -rules: -{{- if .Values.global.cattle.psp.enabled }} -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "kube-prometheus-stack.fullname" . }}-upgrade -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - labels: - app: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - annotations: - "helm.sh/hook": pre-upgrade, pre-rollback - "helm.sh/hook-delete-policy": before-hook-creation, hook-succeeded, hook-failed - "helm.sh/hook-weight": "1" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "kube-prometheus-stack.fullname" . }}-upgrade -subjects: -- kind: ServiceAccount - name: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - namespace: {{ template "kube-prometheus-stack.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - annotations: - "helm.sh/hook": pre-upgrade, pre-rollback - "helm.sh/hook-delete-policy": before-hook-creation, hook-succeeded, hook-failed - "helm.sh/hook-weight": "1" ---- -{{- if .Values.global.cattle.psp.enabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.fullname" . }}-upgrade - annotations: - "helm.sh/hook": pre-upgrade, pre-rollback - "helm.sh/hook-delete-policy": before-hook-creation, hook-succeeded, hook-failed - "helm.sh/hook-weight": "1" -spec: - privileged: false - allowPrivilegeEscalation: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - 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 }} -{{- end }} \ No newline at end of file diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/extrasecret.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/extrasecret.yaml deleted file mode 100644 index 587fca2..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/extrasecret.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if .Values.thanosRuler.extraSecret.data -}} -{{- $secretName := printf "%s-extra" (include "kube-prometheus-stack.thanosRuler.name" . ) -}} -apiVersion: v1 -kind: Secret -metadata: - name: {{ default $secretName .Values.thanosRuler.extraSecret.name }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- if .Values.thanosRuler.extraSecret.annotations }} - annotations: -{{ toYaml .Values.thanosRuler.extraSecret.annotations | indent 4 }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.thanosRuler.name" . }} - app.kubernetes.io/component: thanos-ruler -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -data: -{{- range $key, $val := .Values.thanosRuler.extraSecret.data }} - {{ $key }}: {{ $val | b64enc | quote }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/ingress.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/ingress.yaml deleted file mode 100644 index e245ad4..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/ingress.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if and .Values.thanosRuler.enabled .Values.thanosRuler.ingress.enabled }} -{{- $pathType := .Values.thanosRuler.ingress.pathType | default "ImplementationSpecific" }} -{{- $serviceName := include "kube-prometheus-stack.thanosRuler.name" . }} -{{- $servicePort := .Values.thanosRuler.service.port -}} -{{- $routePrefix := list .Values.thanosRuler.thanosRulerSpec.routePrefix }} -{{- $paths := .Values.thanosRuler.ingress.paths | default $routePrefix -}} -{{- $apiIsStable := eq (include "kube-prometheus-stack.ingress.isStable" .) "true" -}} -{{- $ingressSupportsPathType := eq (include "kube-prometheus-stack.ingress.supportsPathType" .) "true" -}} -apiVersion: {{ include "kube-prometheus-stack.ingress.apiVersion" . }} -kind: Ingress -metadata: - name: {{ $serviceName }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- if .Values.thanosRuler.ingress.annotations }} - annotations: - {{- tpl (toYaml .Values.thanosRuler.ingress.annotations) . | nindent 4 }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.thanosRuler.name" . }} -{{- if .Values.thanosRuler.ingress.labels }} -{{ toYaml .Values.thanosRuler.ingress.labels | indent 4 }} -{{- end }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - {{- if $apiIsStable }} - {{- if .Values.thanosRuler.ingress.ingressClassName }} - ingressClassName: {{ .Values.thanosRuler.ingress.ingressClassName }} - {{- end }} - {{- end }} - rules: - {{- if .Values.thanosRuler.ingress.hosts }} - {{- range $host := .Values.thanosRuler.ingress.hosts }} - - host: {{ tpl $host $ }} - http: - paths: - {{- range $p := $paths }} - - path: {{ tpl $p $ }} - {{- if and $pathType $ingressSupportsPathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - {{- if $apiIsStable }} - service: - name: {{ $serviceName }} - port: - number: {{ $servicePort }} - {{- else }} - serviceName: {{ $serviceName }} - servicePort: {{ $servicePort }} - {{- end }} - {{- end -}} - {{- end -}} - {{- else }} - - http: - paths: - {{- range $p := $paths }} - - path: {{ tpl $p $ }} - {{- if and $pathType $ingressSupportsPathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - {{- if $apiIsStable }} - service: - name: {{ $serviceName }} - port: - number: {{ $servicePort }} - {{- else }} - serviceName: {{ $serviceName }} - servicePort: {{ $servicePort }} - {{- end }} - {{- end -}} - {{- end -}} - {{- if .Values.thanosRuler.ingress.tls }} - tls: -{{ tpl (toYaml .Values.thanosRuler.ingress.tls | indent 4) . }} - {{- end -}} -{{- end -}} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/podDisruptionBudget.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/podDisruptionBudget.yaml deleted file mode 100644 index 83e54ed..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/podDisruptionBudget.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if and .Values.thanosRuler.enabled .Values.thanosRuler.podDisruptionBudget.enabled }} -apiVersion: {{ include "kube-prometheus-stack.pdb.apiVersion" . }} -kind: PodDisruptionBudget -metadata: - name: {{ template "kube-prometheus-stack.thanosRuler.name" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.thanosRuler.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - {{- if .Values.thanosRuler.podDisruptionBudget.minAvailable }} - minAvailable: {{ .Values.thanosRuler.podDisruptionBudget.minAvailable }} - {{- end }} - {{- if .Values.thanosRuler.podDisruptionBudget.maxUnavailable }} - maxUnavailable: {{ .Values.thanosRuler.podDisruptionBudget.maxUnavailable }} - {{- end }} - selector: - matchLabels: - app.kubernetes.io/name: thanos-ruler - thanos-ruler: {{ template "kube-prometheus-stack.thanosRuler.name" . }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/ruler.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/ruler.yaml deleted file mode 100644 index b281221..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/ruler.yaml +++ /dev/null @@ -1,189 +0,0 @@ -{{- if .Values.thanosRuler.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ThanosRuler -metadata: - name: {{ template "kube-prometheus-stack.thanosRuler.name" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ include "kube-prometheus-stack.thanosRuler.name" . }} -{{- include "kube-prometheus-stack.labels" . | indent 4 -}} -{{- if .Values.thanosRuler.annotations }} - annotations: -{{ toYaml .Values.thanosRuler.annotations | indent 4 }} -{{- end }} -spec: -{{- if .Values.thanosRuler.thanosRulerSpec.image }} - {{- $registry := include "monitoring_registry" . | default .Values.thanosRuler.thanosRulerSpec.image.registry -}} - {{- if and .Values.thanosRuler.thanosRulerSpec.image.tag .Values.thanosRuler.thanosRulerSpec.image.sha }} - image: "{{ $registry }}/{{ .Values.thanosRuler.thanosRulerSpec.image.repository }}:{{ .Values.thanosRuler.thanosRulerSpec.image.tag }}@sha256:{{ .Values.thanosRuler.thanosRulerSpec.image.sha }}" - {{- else if .Values.thanosRuler.thanosRulerSpec.image.sha }} - image: "{{ $registry }}/{{ .Values.thanosRuler.thanosRulerSpec.image.repository }}@sha256:{{ .Values.thanosRuler.thanosRulerSpec.image.sha }}" - {{- else if .Values.thanosRuler.thanosRulerSpec.image.tag }} - image: "{{ $registry }}/{{ .Values.thanosRuler.thanosRulerSpec.image.repository }}:{{ .Values.thanosRuler.thanosRulerSpec.image.tag }}" - {{- else }} - image: "{{ $registry }}/{{ .Values.thanosRuler.thanosRulerSpec.image.repository }}" - {{- end }} - {{- if .Values.thanosRuler.thanosRulerSpec.image.sha }} - sha: {{ .Values.thanosRuler.thanosRulerSpec.image.sha }} - {{- end }} -{{- end }} - replicas: {{ .Values.thanosRuler.thanosRulerSpec.replicas }} - listenLocal: {{ .Values.thanosRuler.thanosRulerSpec.listenLocal }} - serviceAccountName: {{ template "kube-prometheus-stack.thanosRuler.serviceAccountName" . }} -{{- if .Values.thanosRuler.thanosRulerSpec.externalPrefix }} - externalPrefix: "{{ tpl .Values.thanosRuler.thanosRulerSpec.externalPrefix . }}" -{{- else if and .Values.thanosRuler.ingress.enabled .Values.thanosRuler.ingress.hosts }} - externalPrefix: "http://{{ tpl (index .Values.thanosRuler.ingress.hosts 0) . }}{{ .Values.thanosRuler.thanosRulerSpec.routePrefix }}" -{{- else }} - externalPrefix: http://{{ template "kube-prometheus-stack.thanosRuler.name" . }}.{{ template "kube-prometheus-stack.namespace" . }}:{{ .Values.thanosRuler.service.port }} -{{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 4 }} -{{- if .Values.thanosRuler.thanosRulerSpec.additionalArgs }} - additionalArgs: -{{ toYaml .Values.thanosRuler.thanosRulerSpec.additionalArgs | indent 4 }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.nodeSelector }} -{{ toYaml .Values.thanosRuler.thanosRulerSpec.nodeSelector | indent 4 }} -{{- end }} - paused: {{ .Values.thanosRuler.thanosRulerSpec.paused }} - logFormat: {{ .Values.thanosRuler.thanosRulerSpec.logFormat | quote }} - logLevel: {{ .Values.thanosRuler.thanosRulerSpec.logLevel | quote }} - retention: {{ .Values.thanosRuler.thanosRulerSpec.retention | quote }} -{{- if .Values.thanosRuler.thanosRulerSpec.evaluationInterval }} - evaluationInterval: {{ .Values.thanosRuler.thanosRulerSpec.evaluationInterval }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.ruleNamespaceSelector }} - ruleNamespaceSelector: -{{ tpl (toYaml .Values.thanosRuler.thanosRulerSpec.ruleNamespaceSelector | indent 4) . }} -{{ else }} - ruleNamespaceSelector: {} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.ruleSelector }} - ruleSelector: -{{ tpl (toYaml .Values.thanosRuler.thanosRulerSpec.ruleSelector | indent 4) .}} -{{- else if .Values.thanosRuler.thanosRulerSpec.ruleSelectorNilUsesHelmValues }} - ruleSelector: - matchLabels: - release: {{ $.Release.Name | quote }} -{{ else }} - ruleSelector: {} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.alertQueryUrl }} - alertQueryUrl: "{{ .Values.thanosRuler.thanosRulerSpec.alertQueryUrl }}" -{{- end}} -{{- if .Values.thanosRuler.thanosRulerSpec.alertmanagersUrl }} - alertmanagersUrl: -{{ toYaml .Values.thanosRuler.thanosRulerSpec.alertmanagersUrl | indent 4 }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.alertmanagersConfig.existingSecret }} - alertmanagersConfig: - key: "{{.Values.thanosRuler.thanosRulerSpec.alertmanagersConfig.existingSecret.key }}" - name: "{{.Values.thanosRuler.thanosRulerSpec.alertmanagersConfig.existingSecret.name }}" -{{- else if .Values.thanosRuler.thanosRulerSpec.alertmanagersConfig.secret }} - alertmanagersConfig: - key: alertmanager-configs.yaml - name: {{ template "kube-prometheus-stack.thanosRuler.name" . }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.queryEndpoints }} - queryEndpoints: -{{ toYaml .Values.thanosRuler.thanosRulerSpec.queryEndpoints | indent 4 }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.queryConfig.existingSecret }} - queryConfig: - key: "{{.Values.thanosRuler.thanosRulerSpec.queryConfig.existingSecret.key }}" - name: "{{.Values.thanosRuler.thanosRulerSpec.queryConfig.existingSecret.name }}" -{{- else if .Values.thanosRuler.thanosRulerSpec.queryConfig.secret }} - queryConfig: - key: query-configs.yaml - name: {{ template "kube-prometheus-stack.thanosRuler.name" . }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.resources }} - resources: -{{ toYaml .Values.thanosRuler.thanosRulerSpec.resources | indent 4 }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.routePrefix }} - routePrefix: "{{ .Values.thanosRuler.thanosRulerSpec.routePrefix }}" -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.securityContext }} - securityContext: -{{ toYaml .Values.thanosRuler.thanosRulerSpec.securityContext | indent 4 }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.storage }} - storage: -{{ toYaml .Values.thanosRuler.thanosRulerSpec.storage | indent 4 }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.objectStorageConfig.existingSecret }} - objectStorageConfig: - key: "{{.Values.thanosRuler.thanosRulerSpec.objectStorageConfig.existingSecret.key }}" - name: "{{.Values.thanosRuler.thanosRulerSpec.objectStorageConfig.existingSecret.name }}" -{{- else if .Values.thanosRuler.thanosRulerSpec.objectStorageConfig.secret }} - objectStorageConfig: - key: object-storage-configs.yaml - name: {{ template "kube-prometheus-stack.thanosRuler.name" . }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.labels }} - labels: -{{ toYaml .Values.thanosRuler.thanosRulerSpec.labels | indent 4 }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.podMetadata }} - podMetadata: -{{ toYaml .Values.thanosRuler.thanosRulerSpec.podMetadata | indent 4 }} -{{- end }} -{{- if or .Values.thanosRuler.thanosRulerSpec.podAntiAffinity .Values.thanosRuler.thanosRulerSpec.affinity }} - affinity: -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.affinity }} -{{ toYaml .Values.thanosRuler.thanosRulerSpec.affinity | indent 4 }} -{{- end }} -{{- if eq .Values.thanosRuler.thanosRulerSpec.podAntiAffinity "hard" }} - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - topologyKey: {{ .Values.thanosRuler.thanosRulerSpec.podAntiAffinityTopologyKey }} - labelSelector: - matchExpressions: - - {key: app.kubernetes.io/name, operator: In, values: [thanos-ruler]} - - {key: thanos-ruler, operator: In, values: [{{ template "kube-prometheus-stack.thanosRuler.name" . }}]} -{{- else if eq .Values.thanosRuler.thanosRulerSpec.podAntiAffinity "soft" }} - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 100 - podAffinityTerm: - topologyKey: {{ .Values.thanosRuler.thanosRulerSpec.podAntiAffinityTopologyKey }} - labelSelector: - matchExpressions: - - {key: app.kubernetes.io/name, operator: In, values: [thanos-ruler]} - - {key: thanos-ruler, operator: In, values: [{{ template "kube-prometheus-stack.thanosRuler.name" . }}]} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 4 }} -{{- if .Values.thanosRuler.thanosRulerSpec.tolerations }} -{{ toYaml .Values.thanosRuler.thanosRulerSpec.tolerations | indent 4 }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.topologySpreadConstraints }} - topologySpreadConstraints: -{{ toYaml .Values.thanosRuler.thanosRulerSpec.topologySpreadConstraints | indent 4 }} -{{- end }} -{{- if .Values.global.imagePullSecrets }} - imagePullSecrets: -{{ toYaml .Values.global.imagePullSecrets | indent 4 }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.containers }} - containers: -{{ toYaml .Values.thanosRuler.thanosRulerSpec.containers | indent 4 }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.initContainers }} - initContainers: -{{ toYaml .Values.thanosRuler.thanosRulerSpec.initContainers | indent 4 }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.priorityClassName }} - priorityClassName: {{.Values.thanosRuler.thanosRulerSpec.priorityClassName }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.volumes }} - volumes: -{{ toYaml .Values.thanosRuler.thanosRulerSpec.volumes | indent 4 }} -{{- end }} -{{- if .Values.thanosRuler.thanosRulerSpec.volumeMounts }} - volumeMounts: -{{ toYaml .Values.thanosRuler.thanosRulerSpec.volumeMounts | indent 4 }} -{{- end }} - portName: {{ .Values.thanosRuler.thanosRulerSpec.portName }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/secret.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/secret.yaml deleted file mode 100644 index acab7fd..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/secret.yaml +++ /dev/null @@ -1,26 +0,0 @@ -{{- if .Values.thanosRuler.enabled }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "kube-prometheus-stack.thanosRuler.name" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ include "kube-prometheus-stack.thanosRuler.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -data: - {{- with .Values.thanosRuler.thanosRulerSpec.alertmanagersConfig }} - {{- if and .secret (not .existingSecret) }} - alertmanager-configs.yaml: {{ toYaml .secret | b64enc | quote }} - {{- end }} - {{- end }} - {{- with .Values.thanosRuler.thanosRulerSpec.objectStorageConfig }} - {{- if and .secret (not .existingSecret) }} - object-storage-configs.yaml: {{ toYaml .secret | b64enc | quote }} - {{- end }} - {{- end }} - {{- with .Values.thanosRuler.thanosRulerSpec.queryConfig }} - {{- if and .secret (not .existingSecret) }} - query-configs.yaml: {{ toYaml .secret | b64enc | quote }} - {{- end }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/service.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/service.yaml deleted file mode 100644 index be0c844..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/service.yaml +++ /dev/null @@ -1,53 +0,0 @@ -{{- if .Values.thanosRuler.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-prometheus-stack.thanosRuler.name" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.thanosRuler.name" . }} - self-monitor: {{ .Values.thanosRuler.serviceMonitor.selfMonitor | quote }} -{{- include "kube-prometheus-stack.labels" . | indent 4 -}} -{{- if .Values.thanosRuler.service.labels }} -{{ toYaml .Values.thanosRuler.service.labels | indent 4 }} -{{- end }} -{{- if .Values.thanosRuler.service.annotations }} - annotations: -{{ toYaml .Values.thanosRuler.service.annotations | indent 4 }} -{{- end }} -spec: -{{- if .Values.thanosRuler.service.clusterIP }} - clusterIP: {{ .Values.thanosRuler.service.clusterIP }} -{{- end }} -{{- if .Values.thanosRuler.service.externalIPs }} - externalIPs: -{{ toYaml .Values.thanosRuler.service.externalIPs | indent 4 }} -{{- end }} -{{- if .Values.thanosRuler.service.loadBalancerIP }} - loadBalancerIP: {{ .Values.thanosRuler.service.loadBalancerIP }} -{{- end }} -{{- if .Values.thanosRuler.service.loadBalancerSourceRanges }} - loadBalancerSourceRanges: - {{- range $cidr := .Values.thanosRuler.service.loadBalancerSourceRanges }} - - {{ $cidr }} - {{- end }} -{{- end }} -{{- if ne .Values.thanosRuler.service.type "ClusterIP" }} - externalTrafficPolicy: {{ .Values.thanosRuler.service.externalTrafficPolicy }} -{{- end }} - ports: - - name: {{ .Values.thanosRuler.thanosRulerSpec.portName }} - {{- if eq .Values.thanosRuler.service.type "NodePort" }} - nodePort: {{ .Values.thanosRuler.service.nodePort }} - {{- end }} - port: {{ .Values.thanosRuler.service.port }} - targetPort: {{ .Values.thanosRuler.service.targetPort }} - protocol: TCP -{{- if .Values.thanosRuler.service.additionalPorts }} -{{ toYaml .Values.thanosRuler.service.additionalPorts | indent 2 }} -{{- end }} - selector: - app.kubernetes.io/name: thanos-ruler - thanos-ruler: {{ template "kube-prometheus-stack.thanosRuler.name" . }} - type: "{{ .Values.thanosRuler.service.type }}" -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/serviceaccount.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/serviceaccount.yaml deleted file mode 100644 index b58f1cd..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/serviceaccount.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.thanosRuler.enabled .Values.thanosRuler.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "kube-prometheus-stack.thanosRuler.serviceAccountName" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.thanosRuler.name" . }} - app.kubernetes.io/name: {{ template "kube-prometheus-stack.thanosRuler.name" . }} - app.kubernetes.io/component: thanos-ruler -{{- include "kube-prometheus-stack.labels" . | indent 4 -}} -{{- if .Values.thanosRuler.serviceAccount.annotations }} - annotations: -{{ toYaml .Values.thanosRuler.serviceAccount.annotations | indent 4 }} -{{- end }} -{{- if .Values.global.imagePullSecrets }} -imagePullSecrets: -{{ toYaml .Values.global.imagePullSecrets | indent 2 }} -{{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/servicemonitor.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/servicemonitor.yaml deleted file mode 100644 index b2b138b..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/thanos-ruler/servicemonitor.yaml +++ /dev/null @@ -1,82 +0,0 @@ -{{- if and .Values.thanosRuler.enabled .Values.thanosRuler.serviceMonitor.selfMonitor }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.thanosRuler.name" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.thanosRuler.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- with .Values.thanosRuler.serviceMonitor.additionalLabels }} -{{- toYaml . | nindent 4 }} -{{- end }} -spec: - {{- include "servicemonitor.scrapeLimits" .Values.thanosRuler.serviceMonitor | nindent 2 }} - selector: - matchLabels: - app: {{ template "kube-prometheus-stack.thanosRuler.name" . }} - release: {{ $.Release.Name | quote }} - self-monitor: {{ .Values.thanosRuler.serviceMonitor.selfMonitor | quote }} - namespaceSelector: - matchNames: - - {{ printf "%s" (include "kube-prometheus-stack.namespace" .) | quote }} - endpoints: - - port: {{ .Values.thanosRuler.thanosRulerSpec.portName }} - {{- if .Values.thanosRuler.serviceMonitor.interval }} - interval: {{ .Values.thanosRuler.serviceMonitor.interval }} - {{- end }} - {{- if .Values.thanosRuler.serviceMonitor.proxyUrl }} - proxyUrl: {{ .Values.thanosRuler.serviceMonitor.proxyUrl}} - {{- end }} - {{- if .Values.thanosRuler.serviceMonitor.scheme }} - scheme: {{ .Values.thanosRuler.serviceMonitor.scheme }} - {{- end }} - {{- if .Values.thanosRuler.serviceMonitor.bearerTokenFile }} - bearerTokenFile: {{ .Values.thanosRuler.serviceMonitor.bearerTokenFile }} - {{- end }} - {{- if .Values.thanosRuler.serviceMonitor.tlsConfig }} - tlsConfig: {{- toYaml .Values.thanosRuler.serviceMonitor.tlsConfig | nindent 6 }} - {{- end }} - path: "{{ trimSuffix "/" .Values.thanosRuler.thanosRulerSpec.routePrefix }}/metrics" - {{- if .Values.thanosRuler.serviceMonitor.metricRelabelings }} - metricRelabelings: {{- tpl (toYaml .Values.thanosRuler.serviceMonitor.metricRelabelings | nindent 6) . }} - {{- end }} - {{ if .Values.global.cattle.clusterId }} - - sourceLabels: [__address__] - targetLabel: cluster_id - replacement: {{ .Values.global.cattle.clusterId }} - {{- end }} - {{ if .Values.global.cattle.clusterName}} - - sourceLabels: [__address__] - targetLabel: cluster_name - replacement: {{ .Values.global.cattle.clusterName }} - {{- end }} - {{- if .Values.thanosRuler.serviceMonitor.relabelings }} - relabelings: {{- toYaml .Values.thanosRuler.serviceMonitor.relabelings | nindent 6 }} - {{- end }} - {{- range .Values.thanosRuler.serviceMonitor.additionalEndpoints }} - - port: {{ .port }} - {{- if or $.Values.thanosRuler.serviceMonitor.interval .interval }} - interval: {{ default $.Values.thanosRuler.serviceMonitor.interval .interval }} - {{- end }} - {{- if or $.Values.thanosRuler.serviceMonitor.proxyUrl .proxyUrl }} - proxyUrl: {{ default $.Values.thanosRuler.serviceMonitor.proxyUrl .proxyUrl }} - {{- end }} - {{- if or $.Values.thanosRuler.serviceMonitor.scheme .scheme }} - scheme: {{ default $.Values.thanosRuler.serviceMonitor.scheme .scheme }} - {{- end }} - {{- if or $.Values.thanosRuler.serviceMonitor.bearerTokenFile .bearerTokenFile }} - bearerTokenFile: {{ default $.Values.thanosRuler.serviceMonitor.bearerTokenFile .bearerTokenFile }} - {{- end }} - {{- if or $.Values.thanosRuler.serviceMonitor.tlsConfig .tlsConfig }} - tlsConfig: {{- default $.Values.thanosRuler.serviceMonitor.tlsConfig .tlsConfig | toYaml | nindent 6 }} - {{- end }} - path: {{ .path }} - {{- if or $.Values.thanosRuler.serviceMonitor.metricRelabelings .metricRelabelings }} - metricRelabelings: {{- tpl (default $.Values.thanosRuler.serviceMonitor.metricRelabelings .metricRelabelings | toYaml | nindent 6) . }} - {{- end }} - {{- if or $.Values.thanosRuler.serviceMonitor.relabelings .relabelings }} - relabelings: {{- default $.Values.thanosRuler.serviceMonitor.relabelings .relabelings | toYaml | nindent 6 }} - {{- end }} - {{- end }} -{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/validate-install-crd.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/validate-install-crd.yaml deleted file mode 100644 index 6fcb8b3..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/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 "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/v1alpha1/PrometheusAgent" false -}} -# {{- set $found "monitoring.coreos.com/v1/Prometheus" false -}} -# {{- set $found "monitoring.coreos.com/v1/PrometheusRule" false -}} -# {{- set $found "monitoring.coreos.com/v1alpha1/ScrapeConfig" 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/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/validate-psp-install.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/validate-psp-install.yaml deleted file mode 100644 index a30c59d..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/templates/validate-psp-install.yaml +++ /dev/null @@ -1,7 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -#{{- if .Values.global.cattle.psp.enabled }} -#{{- if not (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} -#{{- fail "The target cluster does not have the PodSecurityPolicy API resource. Please disable PSPs in this chart before proceeding." -}} -#{{- end }} -#{{- end }} -#{{- end }} diff --git a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/values.yaml b/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/values.yaml deleted file mode 100644 index d946249..0000000 --- a/manifests/helm/rancher-monitoring/104.1.2+up57.0.3/values.yaml +++ /dev/null @@ -1,5431 +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 - -## RKE PushProx Monitoring -## ref: https://github.com/rancher/charts/tree/dev-v2.9/packages/rancher-monitoring/rancher-pushprox -## -rkeControllerManager: - enabled: false - metricsPort: 10257 # default to secure port as of k8s >= 1.22 - component: kube-controller-manager - clients: - https: - enabled: true - insecureSkipVerify: true - useServiceAccountCredentials: true - port: 10011 - useLocalhost: true - nodeSelector: - node-role.kubernetes.io/controlplane: "true" - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - kubeVersionOverrides: - - constraint: "< 1.22" - values: - metricsPort: 10252 # default to insecure port in k8s < 1.22 - clients: - https: - enabled: false - insecureSkipVerify: false - useServiceAccountCredentials: false - -rkeScheduler: - enabled: false - metricsPort: 10259 - component: kube-scheduler - clients: - https: - enabled: true - insecureSkipVerify: true - useServiceAccountCredentials: true - port: 10012 - useLocalhost: true - nodeSelector: - node-role.kubernetes.io/controlplane: "true" - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - kubeVersionOverrides: - - constraint: "< 1.23" - values: - metricsPort: 10251 # default to insecure port in k8s < 1.23 - clients: - https: - enabled: false - insecureSkipVerify: false - useServiceAccountCredentials: false - -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 - seLinuxOptions: - # Gives rkeEtcd permissions to read files in /etc/kubernetes/* - # Type is defined in https://github.com/rancher/rancher-selinux - type: rke_kubereader_t - 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.9/packages/rancher-monitoring/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 - -hardened: - k3s: - networkPolicy: - enabled: true - -## KubeADM PushProx Monitoring -## ref: https://github.com/rancher/charts/tree/dev-v2.9/packages/rancher-monitoring/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.9/packages/rancher-monitoring/rancher-pushprox -## -rke2ControllerManager: - enabled: false - metricsPort: 10257 # default to secure port as of k8s >= 1.22 - component: kube-controller-manager - clients: - https: - enabled: true - insecureSkipVerify: true - useServiceAccountCredentials: true - port: 10011 - useLocalhost: true - nodeSelector: - node-role.kubernetes.io/master: "true" - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - kubeVersionOverrides: - - constraint: "< 1.22" - values: - metricsPort: 10252 # default to insecure port in k8s < 1.22 - clients: - https: - enabled: false - insecureSkipVerify: false - useServiceAccountCredentials: false - -rke2Scheduler: - enabled: false - metricsPort: 10259 # default to secure port as of k8s >= 1.22 - component: kube-scheduler - clients: - https: - enabled: true - insecureSkipVerify: true - useServiceAccountCredentials: true - port: 10012 - useLocalhost: true - nodeSelector: - node-role.kubernetes.io/master: "true" - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - kubeVersionOverrides: - - constraint: "< 1.22" - values: - metricsPort: 10251 # default to insecure port in k8s < 1.22 - clients: - https: - enabled: false - insecureSkipVerify: false - useServiceAccountCredentials: false - -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 - # in the RKE2 cluster, the ingress-nginx-controller is deployed - # as a non-hostNetwork workload starting at the following versions - # - >= v1.22.12+rke2r1 < 1.23.0-0 - # - >= v1.23.9+rke2r1 < 1.24.0-0 - # - >= v1.24.3+rke2r1 < 1.25.0-0 - # - >= v1.25.0+rke2r1 - # As a result we do not need clients and proxies as we can directly create - # a service that targets the workload with the given app name - namespaceOverride: kube-system - clients: - enabled: false - proxy: - enabled: false - service: - selector: - app.kubernetes.io/name: rke2-ingress-nginx - kubeVersionOverrides: - - constraint: "< 1.21.0-0" - values: - namespaceOverride: "" - clients: - enabled: true - 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 DaemonSet with 1 pod when RKE2 version is < 1.21.0-0 - deployment: - enabled: false - proxy: - enabled: true - service: - selector: false - - constraint: ">= 1.21.0-0 < 1.22.12-0" - values: - namespaceOverride: "" - clients: - enabled: true - 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 hostNetwork Deployment with 1 pod when RKE2 version is >= 1.21.0-0 - deployment: - enabled: true - replicas: 1 - proxy: - enabled: true - service: - selector: false - - constraint: ">= 1.23.0-0 < v1.23.9-0" - values: - namespaceOverride: "" - clients: - enabled: true - 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 hostNetwork Deployment with 1 pod when RKE2 version is >= 1.20.0-0 - deployment: - enabled: true - replicas: 1 - proxy: - enabled: true - service: - selector: false - - constraint: ">= 1.24.0-0 < v1.24.3-0" - values: - namespaceOverride: "" - clients: - enabled: true - 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 hostNetwork Deployment with 1 pod when RKE2 version is >= 1.20.0-0 - deployment: - enabled: true - replicas: 1 - proxy: - enabled: true - service: - selector: false - - - -## Additional PushProx Monitoring -## ref: https://github.com/rancher/charts/tree/dev-v2.9/packages/rancher-monitoring/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" - -## Upgrades -upgrade: - ## Run upgrade scripts before an upgrade or rollback via a Job hook - enabled: true - ## Image to use to run the scripts - image: - repository: rancher/shell - tag: v0.2.1 - -## Rancher Monitoring -## - -rancherMonitoring: - enabled: true - - ## A namespaceSelector to identify the namespace to find the Rancher deployment - ## - namespaceSelector: - matchNames: - - cattle-system - - ## A selector to identify the Rancher deployment - ## If not set, the chart will try to search for the Rancher deployment in the cattle-system namespace and infer the selector values from it - ## If the Rancher deployment does not exist, no resources will be deployed. - ## - selector: {} - -## 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: "30s" - - ## proxyUrl: URL of a proxy that should be used for scraping. - ## - proxyUrl: "" - - ## 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.26.6 -## -kubeTargetVersionOverride: "" - -## Allow kubeVersion to be overridden while creating the ingress -## -kubeVersionOverride: "" - -## Provide a name to substitute for the full names of resources -## -fullnameOverride: "" - -## Labels to apply to all resources -## -commonLabels: {} -# scmhash: abc123 -# myLabel: aakkmd - -## Install Prometheus Operator CRDs -## -crds: - enabled: true - -## custom Rules to override "for" and "severity" in defaultRules -## -customRules: {} - # AlertmanagerFailedReload: - # for: 3m - # AlertmanagerMembersInconsistent: - # for: 5m - # severity: "warning" - -## Create default rules for monitoring the cluster -## -defaultRules: - create: true - rules: - alertmanager: true - etcd: true - configReloaders: true - general: true - k8sContainerCpuUsageSecondsTotal: true - k8sContainerMemoryCache: true - k8sContainerMemoryRss: true - k8sContainerMemorySwap: true - k8sContainerResource: true - k8sContainerMemoryWorkingSetBytes: true - k8sPodOwner: true - kubeApiserverAvailability: true - kubeApiserverBurnrate: true - kubeApiserverHistogram: true - kubeApiserverSlos: true - kubeControllerManager: true - kubelet: true - kubeProxy: true - kubePrometheusGeneral: true - kubePrometheusNodeRecording: true - kubernetesApps: true - kubernetesResources: true - kubernetesStorage: true - kubernetesSystem: true - kubeSchedulerAlerting: true - kubeSchedulerRecording: true - kubeStateMetrics: true - network: true - node: true - nodeExporterAlerting: true - nodeExporterRecording: true - prometheus: true - prometheusOperator: true - windows: true - - ## Reduce app namespace alert scope - appNamespacesTarget: ".*" - - ## Set keep_firing_for for all alerts - keepFiringFor: "" - - ## Labels for default rules - labels: {} - ## Annotations for default rules - annotations: {} - - ## Additional labels for PrometheusRule alerts - additionalRuleLabels: {} - - ## Additional annotations for PrometheusRule alerts - additionalRuleAnnotations: {} - - ## Additional labels for specific PrometheusRule alert groups - additionalRuleGroupLabels: - alertmanager: {} - etcd: {} - configReloaders: {} - general: {} - k8sContainerCpuUsageSecondsTotal: {} - k8sContainerMemoryCache: {} - k8sContainerMemoryRss: {} - k8sContainerMemorySwap: {} - k8sContainerResource: {} - k8sPodOwner: {} - kubeApiserverAvailability: {} - kubeApiserverBurnrate: {} - kubeApiserverHistogram: {} - kubeApiserverSlos: {} - kubeControllerManager: {} - kubelet: {} - kubeProxy: {} - kubePrometheusGeneral: {} - kubePrometheusNodeRecording: {} - kubernetesApps: {} - kubernetesResources: {} - kubernetesStorage: {} - kubernetesSystem: {} - kubeSchedulerAlerting: {} - kubeSchedulerRecording: {} - kubeStateMetrics: {} - network: {} - node: {} - nodeExporterAlerting: {} - nodeExporterRecording: {} - prometheus: {} - prometheusOperator: {} - - ## Additional annotations for specific PrometheusRule alerts groups - additionalRuleGroupAnnotations: - alertmanager: {} - etcd: {} - configReloaders: {} - general: {} - k8sContainerCpuUsageSecondsTotal: {} - k8sContainerMemoryCache: {} - k8sContainerMemoryRss: {} - k8sContainerMemorySwap: {} - k8sContainerResource: {} - k8sPodOwner: {} - kubeApiserverAvailability: {} - kubeApiserverBurnrate: {} - kubeApiserverHistogram: {} - kubeApiserverSlos: {} - kubeControllerManager: {} - kubelet: {} - kubeProxy: {} - kubePrometheusGeneral: {} - kubePrometheusNodeRecording: {} - kubernetesApps: {} - kubernetesResources: {} - kubernetesStorage: {} - kubernetesSystem: {} - kubeSchedulerAlerting: {} - kubeSchedulerRecording: {} - kubeStateMetrics: {} - network: {} - node: {} - nodeExporterAlerting: {} - nodeExporterRecording: {} - prometheus: {} - prometheusOperator: {} - - additionalAggregationLabels: [] - - ## Prefix for runbook URLs. Use this to override the first part of the runbookURLs that is common to all rules. - runbookUrl: "https://runbooks.prometheus-operator.dev/runbooks" - - ## Disabled PrometheusRule alerts - disabled: {} - # KubeAPIDown: true - # NodeRAIDDegraded: true - -## 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: - psp: - enabled: false - - 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 - seLinux: - 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 - - 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' - - ## Global image registry to use if it needs to be overriden for some specific use cases (e.g local registries, custom images, ...) - ## - imageRegistry: docker.io - - ## 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" - # or - # - "image-pull-secret" - -windowsMonitoring: - ## Deploys the windows-exporter and Windows-specific dashboards and rules (job name must be 'windows-exporter') - enabled: false - -## Configuration for prometheus-windows-exporter -## ref: https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-windows-exporter -## -prometheus-windows-exporter: - ## Enable ServiceMonitor and set Kubernetes label to use as a job label - ## - prometheus: - monitor: - enabled: true - jobLabel: jobLabel - - releaseLabel: true - - ## Set job label to 'windows-exporter' as required by the default Prometheus rules and Grafana dashboards - ## - podLabels: - jobLabel: windows-exporter - - ## Enable memory and container metrics as required by the default Prometheus rules and Grafana dashboards - ## - config: |- - collectors: - enabled: '[defaults],memory,container' - -## Configuration for alertmanager -## ref: https://prometheus.io/docs/alerting/alertmanager/ -## -alertmanager: - - ## Deploy alertmanager - ## - enabled: true - - ## Annotations for Alertmanager - ## - annotations: {} - - ## 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: {} - automountServiceAccountToken: true - - ## 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/ - ## - config: - global: - resolve_timeout: 5m - inhibit_rules: - - source_matchers: - - 'severity = critical' - target_matchers: - - 'severity =~ warning|info' - equal: - - 'namespace' - - 'alertname' - - source_matchers: - - 'severity = warning' - target_matchers: - - 'severity = info' - equal: - - 'namespace' - - 'alertname' - - source_matchers: - - 'alertname = InfoInhibitor' - target_matchers: - - 'severity = info' - equal: - - 'namespace' - - target_matchers: - - 'alertname = InfoInhibitor' - route: - group_by: ['namespace'] - group_wait: 30s - group_interval: 5m - repeat_interval: 12h - receiver: 'null' - routes: - - receiver: 'null' - matchers: - - alertname = "Watchdog" - receivers: - - name: 'null' - templates: - - '/etc/alertmanager/config/*.tmpl' - - ## Alertmanager configuration directives (as string type, preferred over the config hash map) - ## stringConfig will be used only, if tplConfig is true - ## ref: https://prometheus.io/docs/alerting/configuration/#configuration-file - ## https://prometheus.io/webtools/alerting/routing-tree-editor/ - ## - stringConfig: "" - - ## 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: {} - - ## Override ingress to a different defined port on the service - # servicePort: 8081 - ## Override ingress to a different service then the default, this is useful if you need to - ## point to a specific instance of the alertmanager (eg kube-prometheus-stack-alertmanager-0) - # serviceName: kube-prometheus-stack-alertmanager-0 - - ## 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: - annotations: {} - - # by default the alertmanager secret is not overwritten if it already exists - recreateIfExists: false - - ## 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: [] - # - name: oauth-proxy - # port: 8081 - # targetPort: 8081 - # - name: oauth-metrics - # port: 8082 - # targetPort: 8082 - - externalIPs: [] - loadBalancerIP: "" - loadBalancerSourceRanges: [] - - ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints - ## - externalTrafficPolicy: Cluster - - ## If you want to make sure that connections from a particular client are passed to the same Pod each time - ## Accepts 'ClientIP' or 'None' - ## - sessionAffinity: None - - ## If you want to modify the ClientIP sessionAffinity timeout - ## The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP" - ## - sessionAffinityConfig: - clientIP: - timeoutSeconds: 10800 - - ## 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: [] - - ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints - ## - externalTrafficPolicy: Cluster - - ## Service type - ## - type: ClusterIP - - ## Configuration for creating a ServiceMonitor for AlertManager - ## - serviceMonitor: - ## If true, a ServiceMonitor will be created for the AlertManager service. - ## - selfMonitor: true - - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## Additional labels - ## - additionalLabels: {} - - ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - ## - sampleLimit: 0 - - ## TargetLimit defines a limit on the number of scraped targets that will be accepted. - ## - targetLimit: 0 - - ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelLimit: 0 - - ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelNameLengthLimit: 0 - - ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelValueLengthLimit: 0 - - ## proxyUrl: URL of a proxy that should be used for scraping. - ## - proxyUrl: "" - - ## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS. - scheme: "" - - ## enableHttp2: Whether to enable HTTP2. - ## See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint - enableHttp2: true - - ## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS. - ## Of type: https://github.com/coreos/prometheus-operator/blob/main/Documentation/api.md#tlsconfig - tlsConfig: {} - - bearerTokenFile: - - ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - ## Additional Endpoints - ## - additionalEndpoints: [] - # - port: oauth-metrics - # path: /metrics - - ## Settings affecting alertmanagerSpec - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/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-prometheus-alertmanager - tag: v0.27.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: [] - - ## If false then the user will opt out of automounting API credentials. - ## - automountServiceAccountToken: true - - ## 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: - - ## WebTLSConfig defines the TLS parameters for HTTPS - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#alertmanagerwebspec - web: {} - - ## 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 - - ## AlermanagerConfig to be used as top level configuration - ## - alertmanagerConfiguration: {} - ## Example with select a global alertmanagerconfig - # alertmanagerConfiguration: - # name: global-alertmanager-Configuration - - ## Defines the strategy used by AlertmanagerConfig objects to match alerts. eg: - ## - alertmanagerConfigMatcherStrategy: {} - ## Example with use OnNamespace strategy - # alertmanagerConfigMatcherStrategy: - # type: OnNamespace - - ## 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/main/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: / - - ## scheme: HTTP scheme to use. Can be used with `tlsConfig` for example if using istio mTLS. - scheme: "" - - ## tlsConfig: TLS configuration to use when connect to the endpoint. For example if using istio mTLS. - ## Of type: https://github.com/coreos/prometheus-operator/blob/main/Documentation/api.md#tlsconfig - tlsConfig: {} - - ## 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 - seccompProfile: - type: RuntimeDefault - - ## 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: [] - # containers: - # - name: oauth-proxy - # image: quay.io/oauth2-proxy/oauth2-proxy:v7.5.1 - # args: - # - --upstream=http://127.0.0.1:9093 - # - --http-address=0.0.0.0:8081 - # - --metrics-address=0.0.0.0:8082 - # - ... - # ports: - # - containerPort: 8081 - # name: oauth-proxy - # protocol: TCP - # - containerPort: 8082 - # name: oauth-metrics - # protocol: TCP - # resources: {} - - # 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: "http-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 - - ## clusterGossipInterval determines interval between gossip attempts. - ## Needs to be specified as GoDuration, a time duration that can be parsed by Go’s time.ParseDuration() (e.g. 45ms, 30s, 1m, 1h20m15s) - clusterGossipInterval: "" - - ## clusterPeerTimeout determines timeout for cluster peering. - ## Needs to be specified as GoDuration, a time duration that can be parsed by Go’s time.ParseDuration() (e.g. 45ms, 30s, 1m, 1h20m15s) - clusterPeerTimeout: "" - - ## clusterPushpullInterval determines interval between pushpull attempts. - ## Needs to be specified as GoDuration, a time duration that can be parsed by Go’s time.ParseDuration() (e.g. 45ms, 30s, 1m, 1h20m15s) - clusterPushpullInterval: "" - - ## 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 - - ## Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to - ## be considered available. Defaults to 0 (pod will be considered available as soon as it is ready). - minReadySeconds: 0 - - ## Additional configuration which is not covered by the properties above. (passed through tpl) - additionalConfig: {} - - ## Additional configuration which is not covered by the properties above. - ## Useful, if you need advanced templating inside alertmanagerSpec. - ## Otherwise, use alertmanager.alertmanagerSpec.additionalConfig (passed through tpl) - additionalConfigString: "" - - ## ExtraSecret can be used to store various data in an extra secret - ## (use it for example to store hashed basic auth credentials) - extraSecret: - ## if not set, name will be auto generated - # name: "" - annotations: {} - data: {} - # auth: | - # foo:$apr1$OFG3Xybp$ckL0FHDAkoXYIlH9.cysT0 - # someoneelse:$apr1$DMZX2Z4q$6SbQIfyuLQd.xmo/P0m2c. - -## 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 - - ## ForceDeployDatasources Create datasource configmap even if grafana deployment has been disabled - ## - forceDeployDatasources: false - - ## ForceDeployDashboard Create dashboard configmap even if grafana deployment has been disabled - ## - forceDeployDashboards: false - - ## 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 - - ## Timezone for the default dashboards - ## Other options are: browser or a specific timezone, i.e. Europe/Luxembourg - ## - defaultDashboardsTimezone: utc - - ## Editable flag for the default dashboards - ## - defaultDashboardsEditable: true - - adminPassword: prom-operator - - ingress: - ## If true, Grafana Ingress will be created - ## - enabled: false - - ## IngressClassName for Grafana Ingress. - ## Should be provided if Ingress is enable. - ## - # ingressClassName: nginx - - ## 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 - - # # To make Grafana persistent (Using Statefulset) - # # - # persistence: - # enabled: true - # type: sts - # storageClassName: "storageClassName" - # accessModes: - # - ReadWriteOnce - # size: 20Gi - # finalizers: - # - kubernetes.io/pvc-protection - - serviceAccount: - create: true - autoMount: true - - sidecar: - dashboards: - enabled: true - label: grafana_dashboard - searchNamespace: cattle-dashboards - labelValue: "1" - - # Support for new table panels, when enabled grafana auto migrates the old table panels to newer table panels - enableNewTablePanelSyntax: false - - ## Annotations for Grafana dashboard configmaps - ## - annotations: {} - multicluster: - global: - enabled: false - etcd: - enabled: false - provider: - allowUiUpdates: false - datasources: - enabled: true - defaultDatasourceEnabled: true - isDefaultDatasource: true - - uid: prometheus - - ## URL of prometheus datasource - ## - # url: http://prometheus-stack-prometheus:9090/ - - ## Prometheus request timeout in seconds - # timeout: 30 - - # If not defined, will use prometheus.prometheusSpec.scrapeInterval or its default - # defaultDatasourceScrapeInterval: 15s - - ## Annotations for Grafana datasource configmaps - ## - annotations: {} - - ## Set method for HTTP to send query to datasource - httpMethod: POST - - ## Create datasource for each Pod of Prometheus StatefulSet; - ## this uses headless service `prometheus-operated` which is - ## created by Prometheus Operator - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/0fee93e12dc7c2ea1218f19ae25ec6b893460590/pkg/prometheus/statefulset.go#L255-L286 - createPrometheusReplicasDatasources: false - label: grafana_datasource - labelValue: "1" - - ## Field with internal link pointing to existing data source in Grafana. - ## Can be provisioned via additionalDataSources - exemplarTraceIdDestinations: {} - # datasourceUid: Jaeger - # traceIdLabelName: trace_id - alertmanager: - enabled: true - uid: alertmanager - handleGrafanaManagedAlerts: false - implementation: prometheus - - extraConfigmapMounts: [] - # - name: certs-configmap - # mountPath: /etc/grafana/ssl/ - # configMap: certs-configmap - # readOnly: true - - deleteDatasources: [] - # - name: example-datasource - # orgId: 1 - - ## 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.24.0-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: - # If true, a ServiceMonitor CRD is created for a prometheus operator - # https://github.com/coreos/prometheus-operator - # - enabled: true - - # Path to use for scraping metrics. Might be different if server.root_url is set - # in grafana.ini - path: "/metrics" - - # namespace: monitoring (defaults to use the namespace this chart is deployed to) - - # labels for the ServiceMonitor - labels: {} - - # Scrape interval. If not set, the Prometheus default scrape interval is used. - # - interval: "" - scheme: http - tlsConfig: {} - scrapeTimeout: 30s - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - 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 - - testFramework: - enabled: false - -## Flag to disable all the kubernetes component scrapers -## -kubernetesServiceMonitors: - enabled: true - -## Component scraping the kube api server -## -kubeApiServer: - enabled: true - tlsConfig: - serverName: kubernetes - insecureSkipVerify: false - serviceMonitor: - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - ## - sampleLimit: 0 - - ## TargetLimit defines a limit on the number of scraped targets that will be accepted. - ## - targetLimit: 0 - - ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelLimit: 0 - - ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelNameLengthLimit: 0 - - ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelValueLengthLimit: 0 - - ## proxyUrl: URL of a proxy that should be used for scraping. - ## - proxyUrl: "" - - jobLabel: component - selector: - matchLabels: - component: apiserver - provider: kubernetes - - ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - metricRelabelings: - # Drop excessively noisy apiserver buckets. - - action: drop - regex: apiserver_request_duration_seconds_bucket;(0.15|0.2|0.3|0.35|0.4|0.45|0.6|0.7|0.8|0.9|1.25|1.5|1.75|2|3|3.5|4|4.5|6|7|8|9|15|25|40|50) - sourceLabels: - - __name__ - - le - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - 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 - - ## Additional labels - ## - additionalLabels: {} - # foo: bar - -## Component scraping the kubelet and kubelet-hosted cAdvisor -## -kubelet: - enabled: true - namespace: kube-system - - serviceMonitor: - ## Attach metadata to discovered targets. Requires Prometheus v2.45 for endpoints created by the operator. - ## - attachMetadata: - node: false - - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## If true, Prometheus use (respect) labels provided by exporter. - ## - honorLabels: true - - ## If true, Prometheus ingests metrics with timestamp provided by exporter. If false, Prometheus ingests metrics with timestamp of scrape. - ## - honorTimestamps: true - - ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - ## - sampleLimit: 0 - - ## TargetLimit defines a limit on the number of scraped targets that will be accepted. - ## - targetLimit: 0 - - ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelLimit: 0 - - ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelNameLengthLimit: 0 - - ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelValueLengthLimit: 0 - - ## proxyUrl: URL of a proxy that should be used for scraping. - ## - proxyUrl: "" - - ## 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" - - ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - cAdvisorMetricRelabelings: - # Drop less useful container CPU metrics. - - sourceLabels: [__name__] - action: drop - regex: 'container_cpu_(cfs_throttled_seconds_total|load_average_10s|system_seconds_total|user_seconds_total)' - # Drop less useful container / always zero filesystem metrics. - - sourceLabels: [__name__] - action: drop - regex: 'container_fs_(io_current|io_time_seconds_total|io_time_weighted_seconds_total|reads_merged_total|sector_reads_total|sector_writes_total|writes_merged_total)' - # Drop less useful / always zero container memory metrics. - - sourceLabels: [__name__] - action: drop - regex: 'container_memory_(mapped_file|swap)' - # Drop less useful container process metrics. - - sourceLabels: [__name__] - action: drop - regex: 'container_(file_descriptors|tasks_state|threads_max)' - # Drop container spec metrics that overlap with kube-state-metrics. - - sourceLabels: [__name__] - action: drop - regex: 'container_spec.*' - # Drop cgroup metrics with no pod. - - sourceLabels: [id, pod] - action: drop - regex: '.+;' - # - 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 - - ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - 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 - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - ## metrics_path is required to match upstream rules and charts - cAdvisorRelabelings: - - action: replace - sourceLabels: [__metrics_path__] - targetLabel: metrics_path - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - probesRelabelings: - - action: replace - sourceLabels: [__metrics_path__] - targetLabel: metrics_path - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - resourceRelabelings: - - action: replace - sourceLabels: [__metrics_path__] - targetLabel: metrics_path - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - 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 - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - ## metrics_path is required to match upstream rules and charts - relabelings: - - action: replace - sourceLabels: [__metrics_path__] - targetLabel: metrics_path - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - ## Additional labels - ## - additionalLabels: {} - # foo: bar - -## 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 - ## If null or unset, the value is determined dynamically based on target Kubernetes version due to change - ## of default port in Kubernetes 1.22. - ## - port: null - targetPort: null - # selector: - # component: kube-controller-manager - - serviceMonitor: - enabled: true - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - ## - sampleLimit: 0 - - ## TargetLimit defines a limit on the number of scraped targets that will be accepted. - ## - targetLimit: 0 - - ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelLimit: 0 - - ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelNameLengthLimit: 0 - - ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelValueLengthLimit: 0 - - ## proxyUrl: URL of a proxy that should be used for scraping. - ## - proxyUrl: "" - - ## port: Name of the port the metrics will be scraped from - ## - port: http-metrics - - jobLabel: jobLabel - selector: {} - # matchLabels: - # component: kube-controller-manager - - ## Enable scraping kube-controller-manager over https. - ## Requires proper certs (not self-signed) and delegated authentication/authorization checks. - ## If null or unset, the value is determined dynamically based on target Kubernetes version. - ## - https: null - - # Skip TLS certificate validation when scraping - insecureSkipVerify: null - - # Name of the server to use when validating TLS certificate - serverName: null - - ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - ## Additional labels - ## - additionalLabels: {} - # foo: bar - -## Component scraping coreDns. Use either this or kubeDns -## -coreDns: - enabled: true - service: - enabled: true - port: 9153 - targetPort: 9153 - # selector: - # k8s-app: kube-dns - serviceMonitor: - enabled: true - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - ## - sampleLimit: 0 - - ## TargetLimit defines a limit on the number of scraped targets that will be accepted. - ## - targetLimit: 0 - - ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelLimit: 0 - - ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelNameLengthLimit: 0 - - ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelValueLengthLimit: 0 - - ## proxyUrl: URL of a proxy that should be used for scraping. - ## - proxyUrl: "" - - ## port: Name of the port the metrics will be scraped from - ## - port: http-metrics - - jobLabel: jobLabel - selector: {} - # matchLabels: - # k8s-app: kube-dns - - ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - ## Additional labels - ## - additionalLabels: {} - # foo: bar - -## 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: "" - - ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - ## - sampleLimit: 0 - - ## TargetLimit defines a limit on the number of scraped targets that will be accepted. - ## - targetLimit: 0 - - ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelLimit: 0 - - ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelNameLengthLimit: 0 - - ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelValueLengthLimit: 0 - - ## proxyUrl: URL of a proxy that should be used for scraping. - ## - proxyUrl: "" - - jobLabel: jobLabel - selector: {} - # matchLabels: - # k8s-app: kube-dns - - ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - dnsmasqMetricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - dnsmasqRelabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - ## Additional labels - ## - additionalLabels: {} - # foo: bar - -## 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: 2381 - targetPort: 2381 - # 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: "" - - ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - ## - sampleLimit: 0 - - ## TargetLimit defines a limit on the number of scraped targets that will be accepted. - ## - targetLimit: 0 - - ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelLimit: 0 - - ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelNameLengthLimit: 0 - - ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelValueLengthLimit: 0 - - ## proxyUrl: URL of a proxy that should be used for scraping. - ## - proxyUrl: "" - scheme: http - insecureSkipVerify: false - serverName: "" - caFile: "" - certFile: "" - keyFile: "" - - ## port: Name of the port the metrics will be scraped from - ## - port: http-metrics - - jobLabel: jobLabel - selector: {} - # matchLabels: - # component: etcd - - ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - ## Additional labels - ## - additionalLabels: {} - # foo: bar - -## 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 - ## If null or unset, the value is determined dynamically based on target Kubernetes version due to change - ## of default port in Kubernetes 1.23. - ## - port: null - targetPort: null - # selector: - # component: kube-scheduler - - serviceMonitor: - enabled: true - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - ## - sampleLimit: 0 - - ## TargetLimit defines a limit on the number of scraped targets that will be accepted. - ## - targetLimit: 0 - - ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelLimit: 0 - - ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelNameLengthLimit: 0 - - ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelValueLengthLimit: 0 - - ## proxyUrl: URL of a proxy that should be used for scraping. - ## - proxyUrl: "" - ## Enable scraping kube-scheduler over https. - ## Requires proper certs (not self-signed) and delegated authentication/authorization checks. - ## If null or unset, the value is determined dynamically based on target Kubernetes version. - ## - https: null - - ## port: Name of the port the metrics will be scraped from - ## - port: http-metrics - - jobLabel: jobLabel - selector: {} - # matchLabels: - # component: kube-scheduler - - ## Skip TLS certificate validation when scraping - insecureSkipVerify: null - - ## Name of the server to use when validating TLS certificate - serverName: null - - ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - ## Additional labels - ## - additionalLabels: {} - # foo: bar - -## 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: "" - - ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - ## - sampleLimit: 0 - - ## TargetLimit defines a limit on the number of scraped targets that will be accepted. - ## - targetLimit: 0 - - ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelLimit: 0 - - ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelNameLengthLimit: 0 - - ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelValueLengthLimit: 0 - - ## proxyUrl: URL of a proxy that should be used for scraping. - ## - proxyUrl: "" - - ## port: Name of the port the metrics will be scraped from - ## - port: http-metrics - - jobLabel: jobLabel - selector: {} - # matchLabels: - # k8s-app: kube-proxy - - ## Enable scraping kube-proxy over https. - ## Requires proper certs (not self-signed) and delegated authentication/authorization checks - ## - https: false - - ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - relabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - ## Additional labels - ## - additionalLabels: {} - # foo: bar - -## Component scraping kube state metrics -## -kubeStateMetrics: - enabled: true - -## Configuration for kube-state-metrics subchart -## -kube-state-metrics: - namespaceOverride: "" - rbac: - create: true - releaseLabel: true - prometheus: - monitor: - enabled: true - - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - ## - sampleLimit: 0 - - ## TargetLimit defines a limit on the number of scraped targets that will be accepted. - ## - targetLimit: 0 - - ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelLimit: 0 - - ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelNameLengthLimit: 0 - - ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelValueLengthLimit: 0 - - ## Scrape Timeout. If not set, the Prometheus default scrape timeout is used. - ## - scrapeTimeout: "" - - ## proxyUrl: URL of a proxy that should be used for scraping. - ## - proxyUrl: "" - - # Keep labels from scraped data, overriding server-side labels - ## - honorLabels: true - - ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - selfMonitor: - enabled: false - -## Deploy node exporter as a daemonset to all nodes -## -nodeExporter: - enabled: true - operatingSystems: - linux: - enabled: true - darwin: - enabled: true - - ## ForceDeployDashboard Create dashboard configmap even if nodeExporter deployment has been disabled - ## - forceDeployDashboards: false - -## 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 - releaseLabel: true - extraArgs: - - --collector.filesystem.mount-points-exclude=^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)($|/) - - --collector.filesystem.fs-types-exclude=^(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: - portName: http-metrics - prometheus: - monitor: - enabled: true - - jobLabel: jobLabel - - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - ## - sampleLimit: 0 - - ## TargetLimit defines a limit on the number of scraped targets that will be accepted. - ## - targetLimit: 0 - - ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelLimit: 0 - - ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelNameLengthLimit: 0 - - ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelValueLengthLimit: 0 - - ## How long until a scrape request times out. If not set, the Prometheus default scape timeout is used. - ## - scrapeTimeout: "" - - ## proxyUrl: URL of a proxy that should be used for scraping. - ## - proxyUrl: "" - - ## MetricRelabelConfigs to apply to samples after scraping, but before ingestion. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - metricRelabelings: [] - # - sourceLabels: [__name__] - # separator: ; - # regex: ^node_mountstats_nfs_(event|operations|transport)_.+ - # replacement: $1 - # action: drop - - ## RelabelConfigs to apply to samples before scraping - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - -## Manages Prometheus and Alertmanager components -## -prometheusOperator: - enabled: true - - ## Use '{{ template "kube-prometheus-stack.fullname" . }}-operator' by default - fullnameOverride: "" - - ## Number of old replicasets to retain ## - ## The default value is 10, 0 will garbage-collect old replicasets ## - revisionHistoryLimit: 10 - - ## Strategy of the deployment - ## - strategy: {} - - ## 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: - ## Valid values: Fail, Ignore, IgnoreOnInstallOnly - ## IgnoreOnInstallOnly - If Release.IsInstall returns "true", set "Ignore" otherwise "Fail" - failurePolicy: "" - ## The default timeoutSeconds is 10 and the maximum value is 30. - timeoutSeconds: 10 - 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. - ## - annotations: {} - # argocd.argoproj.io/hook: PreSync - # argocd.argoproj.io/hook-delete-policy: HookSucceeded - - namespaceSelector: {} - - deployment: - enabled: false - - ## Number of replicas - ## - replicas: 1 - - ## Strategy of the deployment - ## - strategy: {} - - # Ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ - podDisruptionBudget: {} - # maxUnavailable: 1 - # minAvailable: 1 - - ## Number of old replicasets to retain ## - ## The default value is 10, 0 will garbage-collect old replicasets ## - revisionHistoryLimit: 10 - - ## 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 - # The default webhook port is 10250 in order to work out-of-the-box in GKE private clusters and avoid adding firewall rules. - internalPort: 10250 - - ## Service account for Prometheus Operator Webhook to use. - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ - ## - serviceAccount: - automountServiceAccountToken: false - create: true - name: "" - - ## Configuration for Prometheus operator Webhook service - ## - service: - annotations: {} - labels: {} - clusterIP: "" - - ## Port to expose on each node - ## Only used if service.type is 'NodePort' - ## - nodePort: 31080 - - nodePortTls: 31443 - - ## Additional ports to open for Prometheus operator Webhook 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: [] - - ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints - ## - externalTrafficPolicy: Cluster - - ## 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 webhook deployment - # ## - labels: {} - - ## Annotations to add to the operator webhook deployment - ## - annotations: {} - - ## Labels to add to the operator webhook pod - ## - podLabels: {} - - ## Annotations to add to the operator webhook 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 - - ## Prometheus-operator webhook image - ## - image: - registry: quay.io - repository: rancher/mirrored-prometheus-operator-admission-webhook - # if not set appVersion field from Chart.yaml is used - tag: v0.72.0 - sha: "" - pullPolicy: IfNotPresent - - ## Define Log Format - # Use logfmt (default) or json logging - # logFormat: logfmt - - ## Decrease log verbosity to errors only - # logLevel: error - - - ## Liveness probe - ## - livenessProbe: - enabled: true - failureThreshold: 3 - initialDelaySeconds: 30 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 - - ## Readiness probe - ## - readinessProbe: - enabled: true - failureThreshold: 3 - initialDelaySeconds: 5 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 - - ## Resource limits & requests - ## - resources: {} - # limits: - # cpu: 200m - # memory: 200Mi - # 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 - seccompProfile: - type: RuntimeDefault - - ## Container-specific security context configuration - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ - ## - containerSecurityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - capabilities: - drop: - - ALL - - ## If false then the user will opt out of automounting API credentials. - ## - automountServiceAccountToken: true - - patch: - enabled: true - image: - repository: rancher/mirrored-ingress-nginx-kube-webhook-certgen - tag: v1.4.3 - sha: "" - pullPolicy: IfNotPresent - resources: {} - ## Provide a priority class name to the webhook patching job - ## - priorityClassName: "" - annotations: {} - # argocd.argoproj.io/hook: PreSync - # argocd.argoproj.io/hook-delete-policy: HookSucceeded - podAnnotations: {} - nodeSelector: {} - affinity: {} - tolerations: [] - - ## SecurityContext holds pod-level security attributes and common container settings. - ## This defaults to non root user with uid 2000 and gid 2000. *v1.PodSecurityContext false - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ - ## - securityContext: - runAsGroup: 2000 - runAsNonRoot: true - runAsUser: 2000 - seccompProfile: - type: RuntimeDefault - - # Security context for create job container - createSecretJob: - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - capabilities: - drop: - - ALL - - # Security context for patch job container - patchWebhookJob: - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - capabilities: - drop: - - ALL - - # Use certmanager to generate webhook certs - certManager: - enabled: false - # self-signed root certificate - rootCert: - duration: "" # default to be 5y - admissionCert: - duration: "" # default to be 1y - # 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: [] - alertmanagerConfigNamespaces: [] - 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" - - networkPolicy: - ## Enable creation of NetworkPolicy resources. - ## - enabled: false - - ## Flavor of the network policy to use. - # Can be: - # * kubernetes for networking.k8s.io/v1/NetworkPolicy - # * cilium for cilium.io/v2/CiliumNetworkPolicy - flavor: kubernetes - - # cilium: - # egress: - - ## match labels used in selector - # matchLabels: {} - - ## Service account for Prometheus Operator to use. - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ - ## - serviceAccount: - create: true - name: "" - automountServiceAccountToken: true - - ## 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 operator 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: [] - - ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints - ## - externalTrafficPolicy: Cluster - - ## 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 deployment - # ## - labels: {} - - ## Annotations to add to the operator deployment - ## - annotations: {} - - ## 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 - - kubeletService: - ## If true, the operator will create and maintain a service for scraping kubelets - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/helm/prometheus-operator/README.md - ## - enabled: true - namespace: kube-system - ## Use '{{ template "kube-prometheus-stack.fullname" . }}-kubelet' by default - name: "" - - ## Create a servicemonitor for the operator - ## - serviceMonitor: - ## If true, create a serviceMonitor for prometheus operator - ## - selfMonitor: true - - ## Labels for ServiceMonitor - additionalLabels: {} - - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - ## - sampleLimit: 0 - - ## TargetLimit defines a limit on the number of scraped targets that will be accepted. - ## - targetLimit: 0 - - ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelLimit: 0 - - ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelNameLengthLimit: 0 - - ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelValueLengthLimit: 0 - - ## Scrape timeout. If not set, the Prometheus default scrape timeout is used. - scrapeTimeout: "" - - ## 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 - - ## Operator Environment - ## env: - ## VARIABLE: value - env: - GOGC: "30" - - # 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 - seccompProfile: - type: RuntimeDefault - - ## Container-specific security context configuration - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ - ## - containerSecurityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - capabilities: - drop: - - ALL - - # Enable vertical pod autoscaler support for prometheus-operator - verticalPodAutoscaler: - enabled: false - - # Recommender responsible for generating recommendation for the object. - # List should be empty (then the default recommender will generate the recommendation) - # or contain exactly one recommender. - # recommenders: - # - name: custom-recommender-performance - - # List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory - controlledResources: [] - # Specifies which resource values should be controlled: RequestsOnly or RequestsAndLimits. - # controlledValues: RequestsAndLimits - - # Define the max allowed resources for the pod - maxAllowed: {} - # cpu: 200m - # memory: 100Mi - # Define the min allowed resources for the pod - minAllowed: {} - # cpu: 200m - # memory: 100Mi - - updatePolicy: - # Specifies minimal number of replicas which need to be alive for VPA Updater to attempt pod eviction - # minReplicas: 1 - # Specifies whether recommended updates are applied when a Pod is started and whether recommended updates - # are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "Auto". - updateMode: Auto - - ## Prometheus-operator image - ## - image: - repository: rancher/mirrored-prometheus-operator-prometheus-operator - tag: v0.72.0 - sha: "" - pullPolicy: IfNotPresent - - ## Prometheus image to use for prometheuses managed by the operator - ## - # prometheusDefaultBaseImage: prometheus/prometheus - - ## Prometheus image registry to use for prometheuses managed by the operator - ## - # prometheusDefaultBaseImageRegistry: quay.io - - ## Alertmanager image to use for alertmanagers managed by the operator - ## - # alertmanagerDefaultBaseImage: prometheus/alertmanager - - ## Alertmanager image registry to use for alertmanagers managed by the operator - ## - # alertmanagerDefaultBaseImageRegistry: quay.io - - ## Prometheus-config-reloader - ## - prometheusConfigReloader: - image: - repository: rancher/mirrored-prometheus-operator-prometheus-config-reloader - tag: v0.72.0 - sha: "" - - # add prometheus config reloader liveness and readiness probe. Default: false - enableProbe: false - - # resource config for prometheusConfigReloader - resources: {} - # requests: - # cpu: 200m - # memory: 50Mi - # limits: - # cpu: 200m - # memory: 50Mi - - ## Thanos side-car image when configured - ## - thanosImage: - repository: rancher/mirrored-thanos-thanos - tag: v0.34.1 - sha: "" - - ## Set a Label Selector to filter watched prometheus and prometheusAgent - ## - prometheusInstanceSelector: "" - - ## Set a Label Selector to filter watched alertmanager - ## - alertmanagerInstanceSelector: "" - - ## Set a Label Selector to filter watched thanosRuler - thanosRulerInstanceSelector: "" - - ## Set a Field Selector to filter watched secrets - ## - secretFieldSelector: "type!=kubernetes.io/dockercfg,type!=kubernetes.io/service-account-token,type!=helm.sh/release.v1" - - ## If false then the user will opt out of automounting API credentials. - ## - automountServiceAccountToken: true - - ## Additional volumes - ## - extraVolumes: [] - - ## Additional volume mounts - ## - extraVolumeMounts: [] - -## Deploy a Prometheus instance -## -prometheus: - enabled: true - - ## Toggle prometheus into agent mode - ## Note many of features described below (e.g. rules, query, alerting, remote read, thanos) will not work in agent mode. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/designs/prometheus-agent.md - ## - agentMode: false - - ## Annotations for Prometheus - ## - annotations: {} - - ## Configure network policy for the prometheus - networkPolicy: - enabled: false - - ## Flavor of the network policy to use. - # Can be: - # * kubernetes for networking.k8s.io/v1/NetworkPolicy - # * cilium for cilium.io/v2/CiliumNetworkPolicy - flavor: kubernetes - - # cilium: - # endpointSelector: - # egress: - # ingress: - - # egress: - # - {} - # ingress: - # - {} - # podSelector: - # matchLabels: - # app: prometheus - - ## Service account for Prometheuses to use. - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ - ## - serviceAccount: - create: true - name: "" - annotations: {} - automountServiceAccountToken: true - - # 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: {} - - ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints - ## - externalTrafficPolicy: Cluster - - ## Service type - ## - type: ClusterIP - - ## gRPC port config - portName: grpc - port: 10901 - targetPort: "grpc" - - ## HTTP port config (for metrics) - httpPortName: http - httpPort: 10902 - targetHttpPort: "http" - - ## ClusterIP to assign - # Default is to make this a headless service ("None") - clusterIP: "None" - - ## Port to expose on each node, if service type is NodePort - ## - nodePort: 30901 - httpNodePort: 30902 - - # ServiceMonitor to scrape Sidecar metrics - # Needs thanosService to be enabled as well - thanosServiceMonitor: - enabled: false - interval: "" - - ## Additional labels - ## - additionalLabels: {} - - ## 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/main/Documentation/api.md#tlsconfig - tlsConfig: {} - - bearerTokenFile: - - ## Metric relabel configs to apply to samples before ingestion. - metricRelabelings: [] - - ## relabel configs to apply to samples before ingestion. - relabelings: [] - - # Service for external access to sidecar - # Enabling this creates a service to expose thanos-sidecar outside the cluster. - thanosServiceExternal: - enabled: false - annotations: {} - labels: {} - loadBalancerIP: "" - loadBalancerSourceRanges: [] - - ## gRPC port config - portName: grpc - port: 10901 - targetPort: "grpc" - - ## HTTP port config (for metrics) - httpPortName: http - httpPort: 10902 - targetHttpPort: "http" - - ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints - ## - externalTrafficPolicy: Cluster - - ## Service type - ## - type: LoadBalancer - - ## Port to expose on each node - ## - nodePort: 30901 - httpNodePort: 30902 - - ## 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 - - ## Port for Prometheus Reloader to listen on - ## - reloaderWebPort: 8080 - - ## 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: [] - - ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints - ## - externalTrafficPolicy: Cluster - - ## Service type - ## - type: ClusterIP - - ## Additional ports to open for Prometheus service - ## - additionalPorts: [] - # additionalPorts: - # - name: oauth-proxy - # port: 8081 - # targetPort: 8081 - # - name: oauth-metrics - # port: 8082 - # targetPort: 8082 - - ## Consider that all endpoints are considered "ready" even if the Pods themselves are not - ## Ref: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/#ServiceSpec - publishNotReadyAddresses: false - - ## If you want to make sure that connections from a particular client are passed to the same Pod each time - ## Accepts 'ClientIP' or 'None' - ## - sessionAffinity: None - - ## If you want to modify the ClientIP sessionAffinity timeout - ## The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP" - ## - sessionAffinityConfig: - clientIP: - timeoutSeconds: 10800 - - ## 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: [] - - ## Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints - ## - externalTrafficPolicy: Cluster - - ## 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 - # - - ## ExtraSecret can be used to store various data in an extra secret - ## (use it for example to store hashed basic auth credentials) - extraSecret: - ## if not set, name will be auto generated - # name: "" - annotations: {} - data: {} - # auth: | - # foo:$apr1$OFG3Xybp$ckL0FHDAkoXYIlH9.cysT0 - # someoneelse:$apr1$DMZX2Z4q$6SbQIfyuLQd.xmo/P0m2c. - - 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: {} - - ## Redirect ingress to an additional defined port on the service - # servicePort: 8081 - - ## 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: - ## If true, create a serviceMonitor for prometheus - ## - selfMonitor: true - - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## Additional labels - ## - additionalLabels: {} - - ## SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - ## - sampleLimit: 0 - - ## TargetLimit defines a limit on the number of scraped targets that will be accepted. - ## - targetLimit: 0 - - ## Per-scrape limit on number of labels that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelLimit: 0 - - ## Per-scrape limit on length of labels name that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelNameLengthLimit: 0 - - ## Per-scrape limit on length of labels value that will be accepted for a sample. Only valid in Prometheus versions 2.27.0 and newer. - ## - labelValueLengthLimit: 0 - - ## 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/main/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 - - ## Additional Endpoints - ## - additionalEndpoints: [] - # - port: oauth-metrics - # path: /metrics - - ## Settings affecting prometheusSpec - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/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/main/Documentation/api.md#apiserverconfig - ## - apiserverConfig: {} - - ## Allows setting additional arguments for the Prometheus container - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#monitoring.coreos.com/v1.Prometheus - additionalArgs: [] - - ## 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: "30s" - - ## Number of seconds to wait for target to respond before erroring - ## - # scrapeTimeout: "30s" - - ## Interval between consecutive evaluations. - ## - evaluationInterval: "30s" - - ## 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 - - ## Sets version of Prometheus overriding the Prometheus version as derived - ## from the image tag. Useful in cases where the tag does not follow semver v2. - version: "" - - ## WebTLSConfig defines the TLS parameters for HTTPS - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#webtlsconfig - web: {} - - ## Exemplars related settings that are runtime reloadable. - ## It requires to enable the exemplar storage feature to be effective. - exemplars: "" - ## Maximum number of exemplars stored in memory for all series. - ## If not set, Prometheus uses its default value. - ## A value of zero or less than zero disables the storage. - # maxSize: 100000 - - # EnableFeatures API enables access to Prometheus disabled features. - # ref: https://prometheus.io/docs/prometheus/latest/disabled_features/ - enableFeatures: [] - # - exemplar-storage - - ## Image of Prometheus. - ## - image: - repository: rancher/mirrored-prometheus-prometheus - tag: v2.50.1 - 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/main/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: {} - - ## enable --web.enable-remote-write-receiver flag on prometheus-server - ## - enableRemoteWriteReceiver: false - - ## 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: "" - - ## 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/main/Documentation/api.md#queryspec - ## - query: {} - - ## If nil, select own namespace. Namespaces to be selected for PrometheusRules discovery. - ruleNamespaceSelector: {} - ## Example which selects PrometheusRules in namespaces with label "prometheus" set to "somelabel" - # ruleNamespaceSelector: - # matchLabels: - # prometheus: somelabel - - ## 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 - - ## If nil, select own namespace. Namespaces to be selected for PodMonitor discovery. - podMonitorNamespaceSelector: {} - ## Example which selects PodMonitor in namespaces with label "prometheus" set to "somelabel" - # podMonitorNamespaceSelector: - # matchLabels: - # prometheus: somelabel - - ## 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 - - ## If nil, select own namespace. Namespaces to be selected for Probe discovery. - probeNamespaceSelector: {} - ## Example which selects Probe in namespaces with label "prometheus" set to "somelabel" - # probeNamespaceSelector: - # matchLabels: - # prometheus: somelabel - - ## If true, a nil or {} value for prometheus.prometheusSpec.scrapeConfigSelector will cause the - ## prometheus resource to be created with selectors based on values in the helm deployment, - ## which will also match the scrapeConfigs created - ## - scrapeConfigSelectorNilUsesHelmValues: true - - ## scrapeConfigs to be selected for target discovery. - ## If {}, select all scrapeConfigs - ## - scrapeConfigSelector: {} - ## Example which selects scrapeConfigs with label "prometheus" set to "somelabel" - # scrapeConfigSelector: - # matchLabels: - # prometheus: somelabel - - ## If nil, select own namespace. Namespaces to be selected for scrapeConfig discovery. - scrapeConfigNamespaceSelector: {} - ## Example which selects scrapeConfig in namespaces with label "prometheus" set to "somelabel" - # scrapeConfigNamespaceSelector: - # matchLabels: - # prometheus: somelabel - - ## How long to retain metrics - ## - retention: 10d - - ## Maximum size of metrics - ## - retentionSize: "" - - ## Allow out-of-order/out-of-bounds samples ingested into Prometheus for a specified duration - ## See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#tsdb - tsdb: - outOfOrderTimeWindow: 0s - - ## Enable compression of the write-ahead log using Snappy. - ## - walCompression: true - - ## 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/main/Documentation/api.md#remotereadspec - remoteRead: [] - # - url: http://remote1/read - ## additionalRemoteRead is appended to remoteRead - additionalRemoteRead: [] - - ## The remote_write spec configuration for Prometheus. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#remotewritespec - remoteWrite: [] - # - url: http://remote1/push - ## additionalRemoteWrite is appended to remoteWrite - additionalRemoteWrite: [] - - ## Enable/Disable Grafana dashboards provisioning for prometheus remote write feature - remoteWriteDashboards: false - - ## Resource limits & requests - ## - resources: - limits: - memory: 3000Mi - cpu: 1000m - requests: - memory: 750Mi - cpu: 750m - - ## Prometheus StorageSpec for persistent data - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/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. - ## AdditionalScrapeConfigs can be defined as a list or as a templated string. - ## - ## 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 scrape config contains a repetitive section, you may want to use a template. - ## In the following example, you can see how to define `gce_sd_configs` for multiple zones - # additionalScrapeConfigs: | - # - job_name: "node-exporter" - # gce_sd_configs: - # {{range $zone := .Values.gcp_zones}} - # - project: "project1" - # zone: "{{$zone}}" - # port: 9100 - # {{end}} - # relabel_configs: - # ... - - - ## 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 - - ## If additional alertmanager configurations are already deployed in a single secret, or you want to manage - ## them separately from the helm deployment, you can use this section. - ## Expected values are the secret name and key - ## Cannot be used with additionalAlertManagerConfigs - additionalAlertManagerConfigsSecret: {} - # name: - # key: - # optional: false - - ## 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 - - ## If additional alert relabel configurations are already deployed in a single secret, or you want to manage - ## them separately from the helm deployment, you can use this section. - ## Expected values are the secret name and key - ## Cannot be used with additionalAlertRelabelConfigs - additionalAlertRelabelConfigsSecret: {} - # name: - # key: - - ## 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/main/Documentation/api.md - ## - securityContext: - runAsGroup: 2000 - runAsNonRoot: true - runAsUser: 1000 - fsGroup: 2000 - seccompProfile: - type: RuntimeDefault - - ## 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/main/Documentation/api.md#thanosspec - ## - thanos: {} - # secretProviderClass: - # provider: gcp - # parameters: - # secrets: | - # - resourceName: "projects/$PROJECT_ID/secrets/testsecret/versions/latest" - # fileName: "objstore.yaml" - ## ObjectStorageConfig configures object storage in Thanos. - # objectStorageConfig: - # # use existing secret, if configured, objectStorageConfig.secret will not be used - # existingSecret: {} - # # name: "" - # # key: "" - # # will render objectStorageConfig secret data and configure it to be used by Thanos custom resource, - # # ignored when prometheusspec.thanos.objectStorageConfig.existingSecret is set - # # https://thanos.io/tip/thanos/storage.md/#s3 - # secret: {} - # # type: S3 - # # config: - # # bucket: "" - # # endpoint: "" - # # region: "" - # # access_key: "" - # # secret_key: "" - - proxy: - image: - repository: rancher/mirrored-library-nginx - tag: 1.24.0-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: "http-web" - - ## 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 - - ## When ignoreNamespaceSelectors is set to true, namespaceSelector from all PodMonitor, ServiceMonitor and Probe objects will be ignored, - ## they will only discover targets within the namespace of the PodMonitor, ServiceMonitor and Probe object, - ## and servicemonitors will be installed in the default service namespace. - ## Defaults to false. - ignoreNamespaceSelectors: true - - ## 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 - ## Deprecated, use `excludedFromEnforcement` instead - prometheusRulesExcludedFromEnforce: [] - - ## ExcludedFromEnforcement - list of object references to PodMonitor, ServiceMonitor, Probe and PrometheusRule objects - ## to be excluded from enforcing a namespace label of origin. - ## Works only if enforcedNamespaceLabel set to true. - ## See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#objectreference - excludedFromEnforcement: [] - - ## 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 - - # Use to set global sample_limit for Prometheus. This act as default SampleLimit for ServiceMonitor or/and PodMonitor. - # Set to 'false' to disable global sample_limit. or set to a number to override the default value. - sampleLimit: false - - # EnforcedKeepDroppedTargetsLimit defines on the number of targets dropped by relabeling that will be kept in memory. - # The value overrides any spec.keepDroppedTargets set by ServiceMonitor, PodMonitor, Probe objects unless spec.keepDroppedTargets - # is greater than zero and less than spec.enforcedKeepDroppedTargets. 0 means no limit. - enforcedKeepDroppedTargets: 0 - - ## 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 - - ## 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 the overall - ## number of targets under the desired limit. Note that if TargetLimit is lower, that value will be taken instead, except - ## if either value is zero, in which case the non-zero value will be used. If both values are zero, no limit is enforced. - enforcedTargetLimit: false - - - ## Per-scrape limit on number of labels that will be accepted for a sample. If more than this number of labels are present - ## post metric-relabeling, the entire scrape will be treated as failed. 0 means no limit. Only valid in Prometheus versions - ## 2.27.0 and newer. - enforcedLabelLimit: false - - ## Per-scrape limit on length of labels name that will be accepted for a sample. If a label name is longer than this number - ## post metric-relabeling, the entire scrape will be treated as failed. 0 means no limit. Only valid in Prometheus versions - ## 2.27.0 and newer. - enforcedLabelNameLengthLimit: false - - ## Per-scrape limit on length of labels value that will be accepted for a sample. If a label value is longer than this - ## number post metric-relabeling, the entire scrape will be treated as failed. 0 means no limit. Only valid in Prometheus - ## versions 2.27.0 and newer. - enforcedLabelValueLengthLimit: 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 - - ## Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to - ## be considered available. Defaults to 0 (pod will be considered available as soon as it is ready). - minReadySeconds: 0 - - # 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 - # Use the host's network namespace if true. Make sure to understand the security implications if you want to enable it. - # When hostNetwork is enabled, this will set dnsPolicy to ClusterFirstWithHostNet automatically. - hostNetwork: false - - # HostAlias holds the mapping between IP and hostnames that will be injected - # as an entry in the pod’s hosts file. - hostAliases: [] - # - ip: 10.10.0.100 - # hostnames: - # - a1.app.local - # - b1.app.local - - ## TracingConfig configures tracing in Prometheus. - ## See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#prometheustracingconfig - tracingConfig: {} - - ## Additional configuration which is not covered by the properties above. (passed through tpl) - additionalConfig: {} - - ## Additional configuration which is not covered by the properties above. - ## Useful, if you need advanced templating inside alertmanagerSpec. - ## Otherwise, use prometheus.prometheusSpec.additionalConfig (passed through tpl) - additionalConfigString: "" - - ## Defines the maximum time that the `prometheus` container's startup probe - ## will wait before being considered failed. The startup probe will return - ## success after the WAL replay is complete. If set, the value should be - ## greater than 60 (seconds). Otherwise it will be equal to 600 seconds (15 - ## minutes). - maximumStartupDurationSeconds: 0 - - 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