From 19a3151d321ae7a7968e1ae1938b36814ea44070 Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Mon, 12 Feb 2024 12:22:21 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- enterprise/prometheus/16.4.8/CHANGELOG.md | 99 + enterprise/prometheus/16.4.8/Chart.yaml | 53 + enterprise/prometheus/16.4.8/LICENSE | 106 + enterprise/prometheus/16.4.8/README.md | 28 + enterprise/prometheus/16.4.8/app-changelog.md | 11 + enterprise/prometheus/16.4.8/app-readme.md | 8 + .../16.4.8/charts/common-17.2.30.tgz | Bin 0 -> 98054 bytes .../charts/kube-state-metrics-6.1.15.tgz | Bin 0 -> 102836 bytes .../16.4.8/charts/node-exporter-6.1.15.tgz | Bin 0 -> 102560 bytes enterprise/prometheus/16.4.8/ix_values.yaml | 1377 +++++++++++++ enterprise/prometheus/16.4.8/questions.yaml | 1806 +++++++++++++++++ .../prometheus/16.4.8/templates/NOTES.txt | 1 + .../prometheus/16.4.8/templates/_helpers.tpl | 210 ++ .../templates/alertmanager/_alertmanager.tpl | 174 ++ .../templates/alertmanager/secrets.yaml | 13 + .../alertmanager/serviceaccount.yaml | 12 + .../alertmanager/servicemonitor.yaml | 26 + .../prometheus/16.4.8/templates/common.yaml | 13 + .../templates/exporters/core-dns/service.yaml | 22 + .../exporters/core-dns/servicemonitor.yaml | 29 + .../kube-apiserver/servicemonitor.yaml | 35 + .../kube-controller-manager/endpoints.yaml | 18 + .../kube-controller-manager/service.yaml | 25 + .../servicemonitor.yaml | 40 + .../exporters/kube-scheduler/endpoints.yaml | 18 + .../exporters/kube-scheduler/service.yaml | 25 + .../kube-scheduler/servicemonitor.yaml | 40 + .../exporters/kubelet/servicemonitor.yaml | 85 + .../prometheus/_additionalPrometheusRules.tpl | 15 + .../prometheus/_additionalScrapeJobs.tpl | 13 + .../templates/prometheus/_prometheus.tpl | 366 ++++ .../templates/prometheus/_servicemonitor.tpl | 29 + .../templates/prometheus/clusterrole.yaml | 41 + .../prometheus/clusterrolebinding.yaml | 15 + .../templates/prometheus/serviceaccount.yaml | 12 + enterprise/prometheus/16.4.8/values.yaml | 0 36 files changed, 4765 insertions(+) create mode 100644 enterprise/prometheus/16.4.8/CHANGELOG.md create mode 100644 enterprise/prometheus/16.4.8/Chart.yaml create mode 100644 enterprise/prometheus/16.4.8/LICENSE create mode 100644 enterprise/prometheus/16.4.8/README.md create mode 100644 enterprise/prometheus/16.4.8/app-changelog.md create mode 100644 enterprise/prometheus/16.4.8/app-readme.md create mode 100644 enterprise/prometheus/16.4.8/charts/common-17.2.30.tgz create mode 100644 enterprise/prometheus/16.4.8/charts/kube-state-metrics-6.1.15.tgz create mode 100644 enterprise/prometheus/16.4.8/charts/node-exporter-6.1.15.tgz create mode 100644 enterprise/prometheus/16.4.8/ix_values.yaml create mode 100644 enterprise/prometheus/16.4.8/questions.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/NOTES.txt create mode 100644 enterprise/prometheus/16.4.8/templates/_helpers.tpl create mode 100644 enterprise/prometheus/16.4.8/templates/alertmanager/_alertmanager.tpl create mode 100644 enterprise/prometheus/16.4.8/templates/alertmanager/secrets.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/alertmanager/serviceaccount.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/alertmanager/servicemonitor.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/common.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/exporters/core-dns/service.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/exporters/core-dns/servicemonitor.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/exporters/kube-apiserver/servicemonitor.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/exporters/kube-controller-manager/endpoints.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/exporters/kube-controller-manager/service.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/exporters/kube-controller-manager/servicemonitor.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/exporters/kube-scheduler/endpoints.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/exporters/kube-scheduler/service.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/exporters/kube-scheduler/servicemonitor.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/exporters/kubelet/servicemonitor.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/prometheus/_additionalPrometheusRules.tpl create mode 100644 enterprise/prometheus/16.4.8/templates/prometheus/_additionalScrapeJobs.tpl create mode 100644 enterprise/prometheus/16.4.8/templates/prometheus/_prometheus.tpl create mode 100644 enterprise/prometheus/16.4.8/templates/prometheus/_servicemonitor.tpl create mode 100644 enterprise/prometheus/16.4.8/templates/prometheus/clusterrole.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/prometheus/clusterrolebinding.yaml create mode 100644 enterprise/prometheus/16.4.8/templates/prometheus/serviceaccount.yaml create mode 100644 enterprise/prometheus/16.4.8/values.yaml diff --git a/enterprise/prometheus/16.4.8/CHANGELOG.md b/enterprise/prometheus/16.4.8/CHANGELOG.md new file mode 100644 index 00000000000..33ab15d5dbb --- /dev/null +++ b/enterprise/prometheus/16.4.8/CHANGELOG.md @@ -0,0 +1,99 @@ +--- +title: Changelog +--- + +**Important:** +*for the complete changelog, please refer to the website* + + + +## [prometheus-16.4.8](https://github.com/truecharts/charts/compare/prometheus-16.4.7...prometheus-16.4.8) (2024-02-12) + +### Chore + + + +- update container image bitnami/alertmanager to 0.26.0[@537c5f5](https://github.com/537c5f5) by renovate ([#18200](https://github.com/truecharts/charts/issues/18200)) + +- update container image bitnami/prometheus to 2.49.1[@c382eae](https://github.com/c382eae) by renovate ([#18032](https://github.com/truecharts/charts/issues/18032)) + + +## [prometheus-16.4.7](https://github.com/truecharts/charts/compare/prometheus-16.4.6...prometheus-16.4.7) (2024-02-12) + +### Chore + + + +- update container image bitnami/alertmanager to 0.26.0[@130b6ff](https://github.com/130b6ff) by renovate ([#18154](https://github.com/truecharts/charts/issues/18154)) + + +## [prometheus-16.4.6](https://github.com/truecharts/charts/compare/prometheus-16.4.5...prometheus-16.4.6) (2024-02-12) + +### Chore + + + +- update container image bitnami/alertmanager to 0.26.0[@de8bbbd](https://github.com/de8bbbd) by renovate ([#18026](https://github.com/truecharts/charts/issues/18026)) + + +## [prometheus-16.4.5](https://github.com/truecharts/charts/compare/prometheus-16.4.4...prometheus-16.4.5) (2024-02-05) + +### Chore + + + +- update container image bitnami/alertmanager to 0.26.0[@d58f3c7](https://github.com/d58f3c7) by renovate ([#17812](https://github.com/truecharts/charts/issues/17812)) + + +## [prometheus-16.4.4](https://github.com/truecharts/charts/compare/prometheus-16.4.3...prometheus-16.4.4) (2024-02-04) + + +## [prometheus-16.4.3](https://github.com/truecharts/charts/compare/prometheus-16.4.2...prometheus-16.4.3) (2024-02-03) + +### Chore + + + +- update container image common to v17.2.30[@19ad5ec](https://github.com/19ad5ec) by renovate ([#17804](https://github.com/truecharts/charts/issues/17804)) + + +## [prometheus-16.4.2](https://github.com/truecharts/charts/compare/prometheus-16.4.1...prometheus-16.4.2) (2024-02-03) + +### Chore + + + +- update helm general non-major by renovate ([#17801](https://github.com/truecharts/charts/issues/17801)) + +- update container image bitnami/prometheus to 2.49.1[@0f2e8e9](https://github.com/0f2e8e9) by renovate ([#17795](https://github.com/truecharts/charts/issues/17795)) + + +## [prometheus-16.4.1](https://github.com/truecharts/charts/compare/prometheus-16.4.0...prometheus-16.4.1) (2024-01-30) + +### Chore + + + +- update helm chart kube-state-metrics to 6.1.15 by renovate ([#17758](https://github.com/truecharts/charts/issues/17758)) + + +## [prometheus-16.4.0](https://github.com/truecharts/charts/compare/prometheus-16.3.9...prometheus-16.4.0) (2024-01-29) + +### Chore + + + +- update container image quay.io/thanos/thanos to v0.34.0[@2356a5f](https://github.com/2356a5f) by renovate ([#17699](https://github.com/truecharts/charts/issues/17699)) + + +## [prometheus-16.3.9](https://github.com/truecharts/charts/compare/prometheus-16.3.8...prometheus-16.3.9) (2024-01-29) + +### Chore + + + +- update container image bitnami/alertmanager to 0.26.0[@243bc77](https://github.com/243bc77) by renovate ([#17578](https://github.com/truecharts/charts/issues/17578)) + + +## [prometheus-16.3.8](https://github.com/truecharts/charts/compare/prometheus-16.3.7...prometheus-16.3.8) (2024-01-27) + diff --git a/enterprise/prometheus/16.4.8/Chart.yaml b/enterprise/prometheus/16.4.8/Chart.yaml new file mode 100644 index 00000000000..8ad190ae32b --- /dev/null +++ b/enterprise/prometheus/16.4.8/Chart.yaml @@ -0,0 +1,53 @@ +annotations: + max_scale_version: 23.10.2 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: metrics + truecharts.org/max_helm_version: "3.14" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: enterprise +apiVersion: v2 +appVersion: 2.49.1 +dependencies: + - name: common + version: 17.2.30 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] + - name: node-exporter + version: 6.1.15 + repository: https://deps.truecharts.org + condition: exporters.enabled,exporters.node-exporter.enabled + alias: "" + tags: [] + import-values: [] + - name: kube-state-metrics + version: 6.1.15 + repository: https://deps.truecharts.org + condition: exporters.enabled,exporters.kube-state-metrics.enabled + alias: "" + tags: [] + import-values: [] +deprecated: false +description: kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. +home: https://truecharts.org/charts/enterprise/prometheus +icon: https://truecharts.org/img/hotlink-ok/chart-icons/prometheus.png +keywords: + - metrics +kubeVersion: ">=1.24.0-0" +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: prometheus +sources: + - https://github.com/prometheus-community/helm-charts + - https://github.com/prometheus-operator/kube-prometheus + - https://github.com/truecharts/charts/tree/master/charts/enterprise/prometheus + - https://quay.io/thanos/thanos + - https://hub.docker.com/r/bitnami/prometheus + - https://hub.docker.com/r/bitnami/alertmanager +type: application +version: 16.4.8 diff --git a/enterprise/prometheus/16.4.8/LICENSE b/enterprise/prometheus/16.4.8/LICENSE new file mode 100644 index 00000000000..c30fceb4a5b --- /dev/null +++ b/enterprise/prometheus/16.4.8/LICENSE @@ -0,0 +1,106 @@ +Business Source License 1.1 + +Parameters + +Licensor: The TrueCharts Project, it's owner and it's contributors +Licensed Work: The TrueCharts "Prometheus" Helm Chart +Additional Use Grant: You may use the licensed work in production, as long + as it is directly sourced from a TrueCharts provided + official repository, catalog or source. You may also make private + modification to the directly sourced licenced work, + when used in production. + + The following cases are, due to their nature, also + defined as 'production use' and explicitly prohibited: + - Bundling, including or displaying the licensed work + with(in) another work intended for production use, + with the apparent intend of facilitating and/or + promoting production use by third parties in + violation of this license. + +Change Date: 2050-01-01 + +Change License: 3-clause BSD license + +For information about alternative licensing arrangements for the Software, +please contact: legal@truecharts.org + +Notice + +The Business Source License (this document, or the “License”) is not an Open +Source license. However, the Licensed Work will eventually be made available +under an Open Source License, as stated in this License. + +License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved. +“Business Source License” is a trademark of MariaDB Corporation Ab. + +----------------------------------------------------------------------------- + +Business Source License 1.1 + +Terms + +The Licensor hereby grants you the right to copy, modify, create derivative +works, redistribute, and make non-production use of the Licensed Work. The +Licensor may make an Additional Use Grant, above, permitting limited +production use. + +Effective on the Change Date, or the fourth anniversary of the first publicly +available distribution of a specific version of the Licensed Work under this +License, whichever comes first, the Licensor hereby grants you rights under +the terms of the Change License, and the rights granted in the paragraph +above terminate. + +If your use of the Licensed Work does not comply with the requirements +currently in effect as described in this License, you must purchase a +commercial license from the Licensor, its affiliated entities, or authorized +resellers, or you must refrain from using the Licensed Work. + +All copies of the original and modified Licensed Work, and derivative works +of the Licensed Work, are subject to this License. This License applies +separately for each version of the Licensed Work and the Change Date may vary +for each version of the Licensed Work released by Licensor. + +You must conspicuously display this License on each original or modified copy +of the Licensed Work. If you receive the Licensed Work in original or +modified form from a third party, the terms and conditions set forth in this +License apply to your use of that work. + +Any use of the Licensed Work in violation of this License will automatically +terminate your rights under this License for the current and all other +versions of the Licensed Work. + +This License does not grant you any right in any trademark or logo of +Licensor or its affiliates (provided that you may use a trademark or logo of +Licensor as expressly required by this License). + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON +AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, +EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND +TITLE. + +MariaDB hereby grants you permission to use this License’s text to license +your works, and to refer to it using the trademark “Business Source License”, +as long as you comply with the Covenants of Licensor below. + +Covenants of Licensor + +In consideration of the right to use this License’s text and the “Business +Source License” name and trademark, Licensor covenants to MariaDB, and to all +other recipients of the licensed work to be provided by Licensor: + +1. To specify as the Change License the GPL Version 2.0 or any later version, + or a license that is compatible with GPL Version 2.0 or a later version, + where “compatible” means that software provided under the Change License can + be included in a program with software provided under GPL Version 2.0 or a + later version. Licensor may specify additional Change Licenses without + limitation. + +2. To either: (a) specify an additional grant of rights to use that does not + impose any additional restriction on the right granted in this License, as + the Additional Use Grant; or (b) insert the text “None”. + +3. To specify a Change Date. + +4. Not to modify this License in any other way. diff --git a/enterprise/prometheus/16.4.8/README.md b/enterprise/prometheus/16.4.8/README.md new file mode 100644 index 00000000000..fee81aacfbc --- /dev/null +++ b/enterprise/prometheus/16.4.8/README.md @@ -0,0 +1,28 @@ +--- +title: README +--- + +## General Info + +TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/enterprise/prometheus) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +_All Rights Reserved - The TrueCharts Project_ diff --git a/enterprise/prometheus/16.4.8/app-changelog.md b/enterprise/prometheus/16.4.8/app-changelog.md new file mode 100644 index 00000000000..68b648b2aaa --- /dev/null +++ b/enterprise/prometheus/16.4.8/app-changelog.md @@ -0,0 +1,11 @@ + + +## [prometheus-16.4.8](https://github.com/truecharts/charts/compare/prometheus-16.4.7...prometheus-16.4.8) (2024-02-12) + +### Chore + + + +- update container image bitnami/alertmanager to 0.26.0[@537c5f5](https://github.com/537c5f5) by renovate ([#18200](https://github.com/truecharts/charts/issues/18200)) + +- update container image bitnami/prometheus to 2.49.1[@c382eae](https://github.com/c382eae) by renovate ([#18032](https://github.com/truecharts/charts/issues/18032)) \ No newline at end of file diff --git a/enterprise/prometheus/16.4.8/app-readme.md b/enterprise/prometheus/16.4.8/app-readme.md new file mode 100644 index 00000000000..93f59634eaa --- /dev/null +++ b/enterprise/prometheus/16.4.8/app-readme.md @@ -0,0 +1,8 @@ +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. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/enterprise/prometheus](https://truecharts.org/charts/enterprise/prometheus) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/enterprise/prometheus/16.4.8/charts/common-17.2.30.tgz b/enterprise/prometheus/16.4.8/charts/common-17.2.30.tgz new file mode 100644 index 0000000000000000000000000000000000000000..a6cb126e1b283d49dc218680d9b1047e66af30f3 GIT binary patch literal 98054 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%0AIfL=!jZC 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 tJ6Yu~*;FIb@G=`MgUep6of};?E z=<_j=9QbVWjD40(lzN^ZQS0>6(M%dmMg^{4Xh4ZP8^Kn~GzT}QGUutUE>Az4ToTrL z^vmhn)9cfdD@Jy~KPxsG?i8ZOayr^lj49ub(lCOZJ1W~V)njgllv`oPCbpd^!su4Ep9c6|e&Oys?9 zy`=9lNY@{L$=DRhC@(^p!d!|?rjw15Bm5r2j53z;B6L}kGA*#)hrE!RAvK~Ismhlc zgEBpc_g5#ExAQ}p8v@~o0>tatK)k*@e}8d1KNu&3l1YY8{_7Q)QW^9^x{%HDw}6P08+1 zVy&UZqSj)~H4A_0>_5@a@53t?!yrd9gnp$@js0h9e{08#|FXZky8pS9N3;JBX^9TF z63AmQrXXz^{S@{fqeqMO3!>o9nODCw*AxmZYnD0y(2^r9f2uwQ}Oc9Q9lsS?iH1?<| z@KNC1%!pC$_ZNdo?)PWKAsxl>1&X6!Qf6+HL+ur1J>Z@8&QN}lK@5|;GWjB@5JA<- zrC0Ti;s<|%iGBdbN;pcV$;ySdY+`zgpF+a|V3SDia(=6ptO5@go>gW*N#m~|N7Rrt zk1$cU|Hn}e29scp?B5OI|L*Ub`~T+lD*yLV9&P`ZgT0tdUxNE7HhiTwi{9)92;Hkp zFU{apPIL$_ML568{Vdm59nDgyR)C*j-~n%t=PCaOdsezmRU{}zT4jS=Ya{5qWdHCz zng;gK%{UgjCB=DHX1nAmak>E?377`FRpqF>W%_S}dz@l-D|*?{5)4o0RH5QdvkjY8 zuW}4@3aY5EVV<9uEdB9R#N;iTD7olLR}dfm;$~`LQnk9pXRFz(MiIpVcI3z)G&Bb& z^SJQpEmm`jUpoX}K@ue)OmeVgc9Z+7mW~u(hR*djTMr40*U;rW^=O?mJ=IGN)xHnA z#p+qiQz!qWD9h&!09hCRWovKS^#9r3S;>D(c{KTt4)y}0e^Gcph49CF@;Kg~7-r)r zfM@;?zLdWT$;&=7rv-E!JVhb1@Ic2!Z*e{$YDO6FES;TB$2#59G3fA;y7a=}e zXg-iit`dyJ4KMezKFl?9l(I{9Ux1?|q$lL`WR7>q3h}~ai%QU{z)R>Ov%K3^2{igS zZmO4vaL~L?FDR3sf+7)?cRh%}#k-bf(NLOKjh-2ZU+|)fL%aOyaDjsgT9*{~v`slV zU$Q@y39F9^<0>XvYjSb9=dDH3n#rr9F3{0tuS&Z{6SxFs)eP2VvFu{`TsG!&c`I5P zhmx6GLEDn(3yuj=I=36nZ>`hLSzb2Nozr}=eKPJ!Ig2Wjqhtj6enJMzJppZ89cxz> zx*%}Ky0J!|eo?%qlmfJI8>-8jbwyZ|SDQE(l*I^_sP z$z&AA(=W2BO~|OApO|-Ffa_64J$VQYXE1+2**!qXOAzHCpzb?Zq6hp@j)s075si34 zopy3wJIZNtLx6g{!a<{O8XI=N70h$d4h053r*RZSc}$&FNyouM6vtXE+M8>-tN0lN zI41=HA4AMsJ0!43Z83aFo!sDOf0)MbC7F2>G-9sAKDa)-c3e0tnMX-naponHgL*CS%KLjIS) z$Fd0TG93wujsS{T)2BJ}jvl}`#Y{MtcA4MW0aAt1@(GdWPfUv>8E;X^?$Z0 zf0!o?P@VtB_V%8c|95Y1b^m86kI4Tc9MOL9aTF{r4UkZu%~>>y_dMMKrc&DNRvT;R zHCn!O`b(lb^5f_aXapl==Q=(Xx|^Ysi_a%qJuy`u3j8$!Xsp>SV4`0R;+j~(w6H>0 zHGIj5Dwo2bqc|M4wdBI5JzdfjT9aiOP(AZZ#melHBA%;u14}V-=m@Hpt#CFe>Ug|{ z*8=Nn)^JNUL*uYQ7J}lZJ z0vg%kV&sSJuw-p3WQu}>i@1$rf{6)s2|tY@BC6ydhCa?I#uhd_4_}%gL57LRPXy zN3;K5(7|5RmQP^)9L9g%l|{RKP`E_rS4|^vG=>Sp*aIHfq9Xn`nWgzC)!jfSfNR4S zM6;?0Q%gTf1CO7)w_HwsnjMbLf@-eqa)MwLtCA4v0kTyBv~@v)Iz||It^{JPbXQGW zA~-8^g>uy(Rv066`?tXUCI8zJy9z>}+f4OG@ z1*RS>(5 z1lO8v&``Hb0TKu#7br+p^!o>uCyO2}N~|=cN?NA)rAnT;7@-4p`STTo=`l(t?)aJ| zJEnkPiVp7hFF1t(C@z_gVfK(kIb@rxI6uy{nIpGZ`I=$-4rYB=Kqx-D+AFz5L36(p zLUY9Ic&}jWPp)8ql90&GWUC!z@OqFzJV0?s;ADF{5MmRcgb{`o^=jp5O_XxX zK6a!lyWuE7Dw-42sAYa8Rm>h3Rm{(%iax=O3i?MMUM@lZiJvou5K#Q+l&#Ltqi>$dt!SQLHFgE@|my zq-asRc1uyk_bOnnU3;pKNn^(ua6#Du3oc7$@Y4w593MObAV^0CJiNAmCO&t9bi`bf zhH!|oNohIu8K?(XO0hT^MmgP=*k1?FbX$;Fk~hm_+6y1!DCvWZm&_A}`S;Li7v(R( z5c<^fXq3>p#W|YjR>z$psq8WyY^K?%tzm~H_fw{xuyy%2<#}Cg8KM+Q&24HlG8Ezr~Smx(C zlF>mNaVKe(;zANpN1`Mpo8|i;yg`_gJjXE|KFD0w2iN;T-oWUE6sZBtV znXID9ODLjq;6s5vz*PAS19>Q4tO|R z91LJMiXqq_TbU!hb<_j>oEtjEEwCX@W9a>BmRfNBG=j=xG`MQTFgSu(HgM}^`!jdb zgIEdunIkat^I!mckotKJvjzDh&LWOZv4zW8yrk?8TemZA(POtCqozDKxxo*~dweuSqopv`1udeP3@b2VYX@#@1iw|3`)Cv@dKBRJhJ2#gX z5b?tMpY@IZ{_oDm&Gz4JzS94H+-U#p=0$6ryd{5r9sZ-WX6M=Rn0!hgDAm?Ko?KkN ze)r}k`o~vDU;TUQA8WdY1k5s&y~F)-)D-mAFJeDRz-f}hK3&?d-vOJgmtg(Z82LGW zvC-Kjuiiy*M5KTAa(826*m5TbE0AAjnT=t{r1_KXMfbY1lz_VlSwg(b#?}rgbn-bx2@$0E>+K!5*V6q!E( zA6gE{Ebw#KN12-PTxeUKlD_|U7MItLF#>)V0*`4h9$+q+J@5d*gP-I~uw{OU^iF^& z78R}`ipDCCn8B{CuO1C5kz)2mf>prRLRX0(lYyJPgoZlJ+l zQ02>Gj=UV-mfH$(tj-#f4wgHPs-?@C#u;kUQ7{nsAdsQ099% z+r5N@ue*pF;N)@6CE=y-Xhne&VXhnzMM%-wZ@II>H96fd=ZTrIlk99g6vya+G}}Yj z(9f|u))_tbVIfgi0!zVvIraw54gss`_L%)QHpx)U;HO7wB2oR)4Ffw*`bTGfhA^lTmm0UD+k8R|tb^`#`crd3HV##~d?0}U1! zrLws976pDhKsfhU)mZ!%jn_1qvVVc;$`JUee;3739zl9~Qka*5VonuBIz$zqF#Iq) zFeU2RN&vJg&MdxYch*S*;Ny)Wcz-p9VTMu$f&A4N$D-OaNYW;3ENyGau~?W(=h~G# z;fLqnYVQ_(%u9s(i(<0yc(1$S+X z;t|hYKiw|ND!xObB=1C6#E6m0$)JjhP8O~%!dIlla8b^!e86AQEF~;H z1C0?egnq&UUFgAc20jLU0(^|4K2d}jNnMJtxkzR_foXc|&@daB2D#Z0KrPJjds6cY zeU&~W)x8uLoR49aMIm?4RgMH5ty|%RjV5$%q@e2dL{SQKDri*P>&G+#$pZw#s6WU_ z!BNVPqESq^*~RbWFatxv8RR;dNta0)0vxC~Gew3+WKm2 z9d9%)&(^xE(A4&=5~iZZMprzy^0^3BV_d`>n~fUk(Gc=`GM=Vod+(C~B@Ak1+L9X0UA8-Y29su8Z+=&lqfvu# zb%vQKZ51vDuX-azW2dhg5($9DECDFtGhSj^;wIK~ZmX7rnP;{NWQuv6!(n=^>9brd zk^WO&d1PG~ny18dNe^Fuviy>A(uQ_QmT1qGV0olW3ahc9QtxNWSd-NIN+Q^a(F0hI z#qA>PeTyBl8yZp}R6qDhPCZ%fq9g=93*q;_4{0rW5`K1aef!Jl*{j>DlgkgM$40u< zH9riGd9v;*dsvmM>8VYeemFky1Xy!B5UuH+Ui_tJVp=xIE4EmDYI}YdN?giCeG2j& z!nu|*lc<^5C@IovMi|_|z#m~qlu@E{<_H7>^pH>hj9cHq9?BrV4^bWrqNGpC_zB7f zFaskDGZv-rEzB_;96f?0QNxaZJOBL*1b#|Nx)KPN3%bDcx^r#Qr3S?a`*$(C+B=>x z3wsrR(4kMWy*EO)*!i3Ft}X_}6lFT^XI=(&saB_Kh`l@7wFMNrYNYu2d7iP%PyrUcrUDB}LcD-nfV`|!?@D{$N z6gipn$L%d4R|Z9)nWqu$z1y$I4F24i$%%+GfTMnLHGe(m@^t4+cgz3qr zksq^7?R^q`5`#AD*iGHXQ4)P3db_KKieOwZj&6ZV(d8DB(r>D#&i^Ba*)U3Gjr_`< zy7;e~o4e-y&)v;c{I{h%dj8*HuorW5r~v#a4hyyZEc$p*rGBAx4I##UA71$RzyqFF zyb#G%b*Eg*6t6;6c@izyQJ|YLLb0{0Aas1z^`KWZyO-W%kw{i;HD#|44&AV=qI$O2 zU!xd$!26X4EV)K+Q6HZtCs~Fv*Rh`wfU7h|>@*^Q$}zRRPHSK(GQ_4@QdlQ_n++PD zGoq&@qvf^=6yTP>ORb*Adg}In<*0h*5D+!~pS%0p8&>}Rjg|lBQXXypR|b25S>P0? zKZOvW^=HvSz!=4BvAOO-uLUTCS1=pH?6jYt42ITi9hCH<{?Jc7;9(eKF!z8r4sz$s zot2xB_klUGu)&-TlSuDh>+|OZe6koyIaO@G+P33LVAzkfq-gGg{0+@Hl0lkSu zCLE>{&JmtpN7Z@L+A9Ef>b2~Wew9pchij5tC_kY4RfVe+>r&fxiz@hnZnP`jyQ?q2 zS&DNDmEcOV1(@y&A_bHAVBT{wL{kaLqmxfjCFG}${8FM^IKko3of8;;KMg3>euh%N zFVt5Tf<*zBqN19e9X+cuSzV}1*6Cm-;oNvNdY4$LG$#Y>MW2D!^;{TLThU5TQV^lH z*K=Q_sPaJ%Weq=n70Gqhgcx6@7tAI8A!Mlz{1xWq43B!6@yU{d!iy16S2y10Ic zyx2Ald7HS3i@U(w*BKK9q{xRyCXbIL>QRr4c}m{%)PT;gK()K51GQq_tC>WtViK>S zl&5(rRrycOg^baRHnD5=c}ELkZI;1zLKLgs4N~%i0w(o9tOe_kB1&nZFaaBNJ*1X> zb%bZERYEHr#WBlS%j3RbKs5Lig}AFYQIN^Ss+)CXQp}-$4*`Y=hBQefQ4Aajpd2g0 z07#XUYJEnVT)eAR{G#p)a0PP^jBt*IfUX#nP(O_nX2S?$>YZK^TuD{E+zN{U$ZNTf zCWS7P)-1zveH~|J>WYpxUUXtx?$VdI`+RJ3v?rSznjaWww`pyQ;@`NZQ zVB!3wA=cnPt8m)VC^=J)6y4eGTRHl*SUU1&x^n%0DK5lRM<-l2d&_56tFfI;Cr|eU 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 Re*gdg|NqdaNH_pY3;-e0QZ4`h literal 0 HcmV?d00001 diff --git a/enterprise/prometheus/16.4.8/charts/kube-state-metrics-6.1.15.tgz b/enterprise/prometheus/16.4.8/charts/kube-state-metrics-6.1.15.tgz new file mode 100644 index 0000000000000000000000000000000000000000..f45977c59b0e2b1ceea88dbb5cd0bac85c068759 GIT binary patch literal 102836 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 LtCj?g0JIDMJU`>H literal 0 HcmV?d00001 diff --git a/enterprise/prometheus/16.4.8/charts/node-exporter-6.1.15.tgz b/enterprise/prometheus/16.4.8/charts/node-exporter-6.1.15.tgz new file mode 100644 index 0000000000000000000000000000000000000000..8f6ea3281bbcf4eef667aaa96dbd4b7dcd17939f GIT binary patch literal 102560 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 literal 0 HcmV?d00001 diff --git a/enterprise/prometheus/16.4.8/ix_values.yaml b/enterprise/prometheus/16.4.8/ix_values.yaml new file mode 100644 index 00000000000..1a4031d5866 --- /dev/null +++ b/enterprise/prometheus/16.4.8/ix_values.yaml @@ -0,0 +1,1377 @@ +image: + repository: bitnami/prometheus + tag: 2.49.1@sha256:c382eae8b87c1c2349a9a5554eb9887e9c3bfe724b993b6e567da0d81c36a071 +thanosImage: + repository: quay.io/thanos/thanos + tag: v0.34.0@sha256:2356a5f131fd80965d7a0617b70b14e4facae1aee5ec43f117f8bfbe20d987fc +alertmanagerImage: + repository: bitnami/alertmanager + tag: 0.26.0@sha256:537c5f5b35feda7b78899ce196f3b1fbc637677b8345c0f8817384a377e7a282 +global: + labels: {} +workload: + main: + enabled: false + podSpec: + containers: + main: + enabled: false + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false + +configmap: + grafana-datasource: + enabled: "{{ if .Values.grafana.datasource.enabled }}true{{ else }}false{{ end }}" + labels: + grafana_datasources: "1" + data: + datasource.yaml: |- + apiVersion: 1 + datasources: + - name: Prometheus + type: prometheus + uid: {{ .Values.grafana.datasource.uid | default "prometheus" }} + url: http://{{ include "tc.v1.common.lib.chart.names.fullname" $ }}.{{ include "tc.v1.common.lib.metadata.namespace" (dict "rootCtx" $ "objectData" . "caller" "Configmap") }}:{{ .Values.service.main.ports.main.port }} + access: proxy + isDefault: {{ .Values.grafana.datasource.default | default true }} + jsonData: + httpMethod: {{ .Values.grafana.datasource.httpMethod | default "POST" }} + timeInterval: {{ .Values.grafana.datasource.scrapeInterval | default "30s" }} + {{- if .Values.grafana.datasource.timeout }} + timeout: {{ .Values.grafana.datasource.timeout }} + {{- end }} + +grafana: + datasource: + enabled: true + default: true + httpMethod: "POST" + scrapeInterval: "30s" + uid: "prometheus" + +service: + main: + selectorLabels: + app.kubernetes.io/name: prometheus + prometheus: '{{ template "kube-prometheus.prometheus.fullname" . }}' + ports: + main: + port: 9090 + targetPort: 9090 + protocol: http + alertmanager: + enabled: true + selectorLabels: + app.kubernetes.io/name: alertmanager + alertmanager: '{{ template "kube-prometheus.alertmanager.fullname" . }}' + ports: + alertmanager: + enabled: true + port: 9093 + targetPort: 9093 + protocol: http + thanos: + enabled: true + selectorLabels: + app.kubernetes.io/name: prometheus + prometheus: '{{ template "kube-prometheus.prometheus.fullname" . }}' + ports: + thanos: + enabled: true + port: 10901 + targetPort: 10901 + protocol: http +ingress: + main: + enabled: false + alertmanager: + enabled: false + thanos: + enabled: false +#### +## Operator Config +#### +env: + PROMETHEUS_CONFIG_RELOADER: + configMapKeyRef: + name: prometheus-operator-config + key: prometheus-config-reloader +podOptions: + automountServiceAccountToken: true +rbac: + main: + enabled: true + primary: true + clusterWide: true + rules: + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - create + - apiGroups: + - apiextensions.k8s.io + resourceNames: + - alertmanagers.monitoring.coreos.com + - podmonitors.monitoring.coreos.com + - prometheuses.monitoring.coreos.com + - prometheusrules.monitoring.coreos.com + - servicemonitors.monitoring.coreos.com + - thanosrulers.monitoring.coreos.com + - probes.monitoring.coreos.com + resources: + - customresourcedefinitions + verbs: + - get + - update + - apiGroups: + - monitoring.coreos.com + resources: + - alertmanagers + - alertmanagers/finalizers + - alertmanagerconfigs + - prometheuses + - prometheuses/finalizers + - thanosrulers + - thanosrulers/finalizers + - servicemonitors + - podmonitors + - probes + - prometheusrules + verbs: + - "*" + - apiGroups: + - apps + resources: + - statefulsets + verbs: + - "*" + - apiGroups: + - "" + resources: + - configmaps + - secrets + verbs: + - "*" + - apiGroups: + - "" + resources: + - pods + verbs: + - list + - delete + - apiGroups: + - "" + resources: + - services + - services/finalizers + - endpoints + verbs: + - get + - create + - update + - delete + - apiGroups: + - "" + resources: + - nodes + verbs: + - list + - watch + - apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - list + - watch + - apiGroups: + - networking.k8s.io + resources: + - ingresses + verbs: + - get + - list + - watch +# -- The service account the pods will use to interact with the Kubernetes API +serviceAccount: + main: + enabled: true + primary: true +securityContext: + readOnlyRootFilesystem: false +probes: + # -- Liveness probe configuration + # @default -- See below + liveness: + custom: true + spec: + httpGet: + path: "/metrics" + port: promop + scheme: HTTP + # -- Redainess probe configuration + # @default -- See below + readiness: + custom: true + spec: + httpGet: + path: "/metrics" + port: promop + scheme: HTTP + # -- Startup probe configuration + # @default -- See below + startup: + custom: true + spec: + httpGet: + path: "/metrics" + port: promop + scheme: HTTP +operator: + ## Create a servicemonitor for the operator + ## + serviceMonitor: + ## @param operator.serviceMonitor.enabled Creates a ServiceMonitor to monitor Prometheus Operator + ## + enabled: false + ## @param operator.serviceMonitor.interval Scrape interval (use by default, falling back to Prometheus' default) + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint + ## + interval: "" + ## @param operator.serviceMonitor.metricRelabelings Metric relabeling + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs + ## + metricRelabelings: [] + ## @param operator.serviceMonitor.relabelings Relabel configs + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config + ## + relabelings: [] + ## Prometheus Configmap-reload image to use for reloading configmaps + ## defaults to Bitnami Prometheus Operator (ref: https://hub.docker.com/r/tccr.io/truecharts/prometheus-operator/tags/) + ## + prometheusConfigReloader: + containerSecurityContext: + enabled: true + readOnlyRootFilesystem: false + allowPrivilegeEscalation: false + runAsNonRoot: true + capabilities: + drop: + - ALL + livenessProbe: + enabled: true + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 6 + successThreshold: 1 + readinessProbe: + enabled: true + initialDelaySeconds: 15 + periodSeconds: 20 + timeoutSeconds: 5 + failureThreshold: 6 + successThreshold: 1 +#### +## Prometheus Config (Spawned by Operator) +#### + +## Deploy a Prometheus instance +## +prometheus: + ## @param prometheus.enabled Deploy Prometheus to the cluster + ## + enabled: true + ## Bitnami Prometheus image version + ## ref: https://hub.docker.com/r/tccr.io/truecharts/prometheus/tags/ + ## @param prometheus.image.registry Prometheus image registry + ## @param prometheus.image.repository Prometheus image repository + ## @param prometheus.image.tag Prometheus Image tag (immutable tags are recommended) + ## @param prometheus.image.pullSecrets Specify docker-registry secret names as an array + ## + ## Service account for Prometheus to use. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + ## + serviceAccount: + ## @param prometheus.serviceAccount.create Specify whether to create a ServiceAccount for Prometheus + ## + create: true + ## @param prometheus.serviceAccount.name The name of the ServiceAccount to create + ## If not set and create is true, a name is generated using the kube-prometheus.prometheus.fullname template + name: "" + ## @param prometheus.serviceAccount.annotations Additional annotations for created Prometheus ServiceAccount + ## annotations: + ## eks.amazonaws.com/role-arn: arn:aws:iam::ACCOUNT:role/prometheus + ## + annotations: {} + ## Prometheus pods' Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param prometheus.podSecurityContext.enabled Enable security context + ## @param prometheus.podSecurityContext.runAsUser User ID for the container + ## @param prometheus.podSecurityContext.fsGroup Group ID for the container filesystem + ## + podSecurityContext: + enabled: true + runAsUser: 1001 + fsGroup: 1001 + ## Prometheus containers' Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param prometheus.containerSecurityContext.enabled Enable container security context + ## @param prometheus.containerSecurityContext.readOnlyRootFilesystem Mount / (root) as a readonly filesystem + ## @param prometheus.containerSecurityContext.allowPrivilegeEscalation Switch privilegeEscalation possibility on or off + ## @param prometheus.containerSecurityContext.runAsNonRoot Force the container to run as a non root user + ## @param prometheus.containerSecurityContext.capabilities.drop [array] Linux Kernel capabilities which should be dropped + ## + containerSecurityContext: + enabled: true + readOnlyRootFilesystem: false + allowPrivilegeEscalation: false + runAsNonRoot: true + capabilities: + drop: + - ALL + serviceMonitor: + ## @param prometheus.serviceMonitor.enabled Creates a ServiceMonitor to monitor Prometheus itself + ## + enabled: true + ## @param prometheus.serviceMonitor.interval Scrape interval (use by default, falling back to Prometheus' default) + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint + ## + interval: "" + ## @param prometheus.serviceMonitor.metricRelabelings Metric relabeling + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs + ## + metricRelabelings: [] + ## @param prometheus.serviceMonitor.relabelings Relabel configs + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config + ## + relabelings: [] + ## @param prometheus.externalUrl External URL used to access Prometheus + ## If not creating an ingress but still exposing the service some other way (like a proxy) + ## let Prometheus know what its external URL is so that it can properly create links + ## externalUrl: https://prometheus.example.com + ## + externalUrl: "" + ## @param prometheus.resources CPU/Memory resource requests/limits for node + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## + resources: {} + ## @param prometheus.podAffinityPreset Prometheus Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param prometheus.podAntiAffinityPreset Prometheus Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Node affinity preset + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param prometheus.nodeAffinityPreset.type Prometheus Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param prometheus.nodeAffinityPreset.key Prometheus Node label key to match Ignored if `affinity` is set. + ## E.g. + ## key: "kubernetes.io/e2e-az-name" + ## + key: "" + ## @param prometheus.nodeAffinityPreset.values Prometheus Node label values to match. Ignored if `affinity` is set. + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param prometheus.affinity Prometheus Affinity for pod assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## Note: prometheus.podAffinityPreset, prometheus.podAntiAffinityPreset, and prometheus.nodeAffinityPreset will be ignored when it's set + ## + affinity: {} + ## @param prometheus.nodeSelector Prometheus Node labels for pod assignment + ## ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param prometheus.tolerations Prometheus Tolerations for pod assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param prometheus.scrapeInterval Interval between consecutive scrapes + ## + scrapeInterval: "15s" + ## @param prometheus.evaluationInterval Interval between consecutive evaluations + ## + evaluationInterval: "30s" + ## @param prometheus.listenLocal ListenLocal makes the Prometheus server listen on loopback + ## + listenLocal: false + ## Configure extra options for liveness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param prometheus.livenessProbe.enabled Turn on and off liveness probe + ## @param prometheus.livenessProbe.path Path of the HTTP service for checking the healthy state + ## @param prometheus.livenessProbe.initialDelaySeconds Delay before liveness probe is initiated + ## @param prometheus.livenessProbe.periodSeconds How often to perform the probe + ## @param prometheus.livenessProbe.timeoutSeconds When the probe times out + ## @param prometheus.livenessProbe.failureThreshold Minimum consecutive failures for the probe + ## @param prometheus.livenessProbe.successThreshold Minimum consecutive successes for the probe + ## + livenessProbe: + enabled: true + path: /-/healthy + initialDelaySeconds: 0 + failureThreshold: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 + ## Configure extra options for readiness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param prometheus.readinessProbe.enabled Turn on and off readiness probe + ## @param prometheus.readinessProbe.path Path of the HTTP service for checking the ready state + ## @param prometheus.readinessProbe.initialDelaySeconds Delay before readiness probe is initiated + ## @param prometheus.readinessProbe.periodSeconds How often to perform the probe + ## @param prometheus.readinessProbe.timeoutSeconds When the probe times out + ## @param prometheus.readinessProbe.failureThreshold Minimum consecutive failures for the probe + ## @param prometheus.readinessProbe.successThreshold Minimum consecutive successes for the probe + ## + readinessProbe: + enabled: true + path: /-/ready + initialDelaySeconds: 0 + failureThreshold: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 + ## @param prometheus.enableAdminAPI Enable Prometheus adminitrative API + ## ref: https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis + ## + enableAdminAPI: false + ## @param prometheus.enableFeatures Enable access to Prometheus disabled features. + ## ref: https://prometheus.io/docs/prometheus/latest/disabled_features/ + ## + enableFeatures: [] + ## @param prometheus.alertingEndpoints Alertmanagers to which alerts will be sent + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#alertmanagerendpoints + ## + alertingEndpoints: [] + ## @param prometheus.externalLabels External labels to add to any time series or alerts when communicating with external systems + ## + externalLabels: {} + ## @param prometheus.replicaExternalLabelName Name of the external label used to denote replica name + ## + replicaExternalLabelName: "" + ## @param prometheus.replicaExternalLabelNameClear Clear external label used to denote replica name + ## + replicaExternalLabelNameClear: false + ## @param prometheus.routePrefix Prefix used to register routes, overriding externalUrl route + ## Useful for proxies that rewrite URLs. + ## + routePrefix: / + ## @param prometheus.prometheusExternalLabelName Name of the external label used to denote Prometheus instance name + ## + prometheusExternalLabelName: "" + ## @param prometheus.prometheusExternalLabelNameClear Clear external label used to denote Prometheus instance name + ## + prometheusExternalLabelNameClear: false + ## @param prometheus.secrets Secrets that should be mounted into the Prometheus Pods + ## + secrets: [] + ## @param prometheus.configMaps ConfigMaps that should be mounted into the Prometheus Pods + ## + configMaps: [] + ## @param prometheus.querySpec The query command line flags when starting Prometheus + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#queryspec + ## + querySpec: {} + ## @param prometheus.ruleNamespaceSelector Namespaces to be selected for PrometheusRules discovery + ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage + ## + ruleNamespaceSelector: {} + ## @param prometheus.ruleSelector PrometheusRules to be selected for target discovery + ## If {}, select all ServiceMonitors + ## + ruleSelector: {} + ## @param prometheus.serviceMonitorSelector ServiceMonitors to be selected for target discovery + ## If {}, select all ServiceMonitors + ## + serviceMonitorSelector: {} + ## @param prometheus.matchLabels Matchlabels + ## + matchLabels: {} + ## @param prometheus.serviceMonitorNamespaceSelector Namespaces to be selected for ServiceMonitor discovery + ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage + ## + serviceMonitorNamespaceSelector: {} + ## @param prometheus.podMonitorSelector PodMonitors to be selected for target discovery. + ## If {}, select all PodMonitors + ## + podMonitorSelector: {} + ## @param prometheus.podMonitorNamespaceSelector Namespaces to be selected for PodMonitor discovery + ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage + ## + podMonitorNamespaceSelector: {} + ## @param prometheus.probeSelector Probes to be selected for target discovery. + ## If {}, select all Probes + ## + probeSelector: {} + ## @param prometheus.probeNamespaceSelector Namespaces to be selected for Probe discovery + ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage + ## + probeNamespaceSelector: {} + ## @param prometheus.scrapeConfigSelector The scrapeConfigs to be selected for target discovery. + ## If {}, select all scrapeConfigs + ## + scrapeConfigSelector: {} + ## @param prometheus.scrapeConfigNamespaceSelector Namespaces to be selected for scrapeConfig discovery. + ## If {}, select all namespaces. + ## If nil, select own namespace. + scrapeConfigNamespaceSelector: {} + ## @param prometheus.retention Metrics retention days + ## + retention: 31d + ## @param prometheus.retentionSize Maximum size of metrics + ## + retentionSize: "" + ## @param prometheus.disableCompaction Disable the compaction of the Prometheus TSDB + ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#prometheusspec + ## ref: https://prometheus.io/docs/prometheus/latest/storage/#compaction + ## + disableCompaction: false + ## @param prometheus.walCompression Enable compression of the write-ahead log using Snappy + ## + walCompression: false + ## @param prometheus.enableRemoteWriteReceiver Enable Prometheus to be used as a receiver for the Prometheus remote write protocol + ## + enableRemoteWriteReceiver: false + ## @param prometheus.paused If true, the Operator won't process any Prometheus configuration changes + ## + paused: false + ## @param prometheus.replicaCount Number of Prometheus replicas desired + ## + replicaCount: 1 + ## @param prometheus.logLevel Log level for Prometheus + ## + logLevel: info + ## @param prometheus.logFormat Log format for Prometheus + ## + logFormat: logfmt + ## @param prometheus.podMetadata [object] Standard object's metadata + ## ref: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata + ## + podMetadata: + ## labels: + ## app: prometheus + ## k8s-app: prometheus + ## + labels: {} + annotations: {} + ## @param prometheus.remoteRead The remote_read spec configuration for Prometheus + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#remotereadspec + ## remoteRead: + ## - url: http://remote1/read + ## + remoteRead: [] + ## @param prometheus.remoteWrite The remote_write spec configuration for Prometheus + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#remotewritespec + ## remoteWrite: + ## - url: http://remote1/push + ## + remoteWrite: [] + ## @param prometheus.storageSpec Prometheus StorageSpec for persistent data + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/storage.md + ## + storageSpec: {} + ## Prometheus persistence parameters + ## + persistence: + ## @param prometheus.persistence.enabled Use PVCs to persist data. If the storageSpec is provided this will not take effect. + ## + enabled: true + ## @param prometheus.persistence.storageClass Persistent Volume Storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. + ## + storageClass: "" + ## @param prometheus.persistence.accessModes Persistent Volume Access Modes + ## + accessModes: + - ReadWriteOnce + ## @param prometheus.persistence.size Persistent Volume Size + ## + size: 999Gi + ## @param prometheus.priorityClassName Priority class assigned to the Pods + ## + priorityClassName: "" + ## @param prometheus.containers Containers allows injecting additional containers + ## + containers: [] + ## @param prometheus.volumes Volumes allows configuration of additional volumes + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#prometheusspec + ## + volumes: [] + ## @param prometheus.volumeMounts VolumeMounts allows configuration of additional VolumeMounts. Evaluated as a template + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#prometheusspec + ## + volumeMounts: [] + ## @param prometheus.additionalPrometheusRules PrometheusRule defines recording and alerting rules for a Prometheus instance. + additionalPrometheusRules: [] + ## - name: custom-recording-rules + ## groups: + ## - name: sum_node_by_job + ## rules: + ## - record: job:kube_node_labels:sum + ## expr: sum(kube_node_labels) by (job) + ## - name: sum_prometheus_config_reload_by_pod + ## rules: + ## - record: job:prometheus_config_last_reload_successful:sum + ## expr: sum(prometheus_config_last_reload_successful) by (pod) + ## - name: custom-alerting-rules + ## groups: + ## - name: prometheus-config + ## rules: + ## - alert: PrometheusConfigurationReload + ## expr: prometheus_config_last_reload_successful > 0 + ## for: 1m + ## labels: + ## severity: error + ## annotations: + ## summary: "Prometheus configuration reload (instance {{ $labels.instance }})" + ## description: "Prometheus configuration reload error\n VALUE = {{ $value }}\n LABELS: {{ $labels }}" + ## - name: custom-node-exporter-alerting-rules + ## rules: + ## - alert: PhysicalComponentTooHot + ## expr: node_hwmon_temp_celsius > 75 + ## for: 5m + ## labels: + ## severity: warning + ## annotations: + ## summary: "Physical component too hot (instance {{ $labels.instance }})" + ## description: "Physical hardware component too hot\n VALUE = {{ $value }}\n LABELS: {{ $labels }}" + ## - alert: NodeOvertemperatureAlarm + ## expr: node_hwmon_temp_alarm == 1 + ## for: 5m + ## labels: + ## severity: critical + ## annotations: + ## summary: "Node overtemperature alarm (instance {{ $labels.instance }})" + ## description: "Physical node temperature alarm triggered\n VALUE = {{ $value }}\n LABELS: {{ $labels }}" + ## + ## Note that the prometheus will fail to provision if the correct secret does not exist. + ## @param prometheus.additionalScrapeConfigs.enabled Enable additional scrape configs + ## @param prometheus.additionalScrapeConfigs.type Indicates if the cart should use external additional scrape configs or internal configs + ## @param prometheus.additionalScrapeConfigs.external.name Name of the secret that Prometheus should use for the additional external scrape configuration + ## @param prometheus.additionalScrapeConfigs.external.key Name of the key inside the secret to be used for the additional external scrape configuration + ## @param prometheus.additionalScrapeConfigs.internal.jobList A list of Prometheus scrape jobs + ## + additionalScrapeConfigs: + enabled: false + type: external + external: + ## Name of the secret that Prometheus should use for the additional scrape configuration + ## + name: "" + ## Name of the key inside the secret to be used for the additional scrape configuration. + ## + key: "" + internal: + jobList: [] + ## @param prometheus.additionalScrapeConfigsExternal.enabled Deprecated: Enable additional scrape configs that are managed externally to this chart + ## @param prometheus.additionalScrapeConfigsExternal.name Deprecated: Name of the secret that Prometheus should use for the additional scrape configuration + ## @param prometheus.additionalScrapeConfigsExternal.key Deprecated: Name of the key inside the secret to be used for the additional scrape configuration + ## + additionalScrapeConfigsExternal: + enabled: false + name: "" + key: "" + ## Enable additional Prometheus alert relabel configs that are managed externally to this chart + ## Note that the prometheus will fail to provision if the correct secret does not exist. + ## @param prometheus.additionalAlertRelabelConfigsExternal.enabled Enable additional Prometheus alert relabel configs that are managed externally to this chart + ## @param prometheus.additionalAlertRelabelConfigsExternal.name Name of the secret that Prometheus should use for the additional Prometheus alert relabel configuration + ## @param prometheus.additionalAlertRelabelConfigsExternal.key Name of the key inside the secret to be used for the additional Prometheus alert relabel configuration + ## + additionalAlertRelabelConfigsExternal: + enabled: false + name: "" + key: "" + ## Thanos sidecar container configuration + ## + thanos: + ## @param prometheus.thanos.create Create a Thanos sidecar container + ## + create: false + ## Bitnami Thanos image + ## ref: https://hub.docker.com/r/tccr.io/truecharts/thanos/tags/ + ## @param prometheus.thanos.image.registry Thanos image registry + ## @param prometheus.thanos.image.repository Thanos image name + ## @param prometheus.thanos.image.tag Thanos image tag + ## @param prometheus.thanos.image.pullPolicy Thanos image pull policy + ## @param prometheus.thanos.image.pullSecrets Specify docker-registry secret names as an array + ## + ## Thanos Sidecar container's securityContext + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param prometheus.thanos.containerSecurityContext.enabled Enable container security context + ## @param prometheus.thanos.containerSecurityContext.readOnlyRootFilesystem mount / (root) as a readonly filesystem + ## @param prometheus.thanos.containerSecurityContext.allowPrivilegeEscalation Switch privilegeEscalation possibility on or off + ## @param prometheus.thanos.containerSecurityContext.runAsNonRoot Force the container to run as a non root user + ## @param prometheus.thanos.containerSecurityContext.capabilities.drop [array] Linux Kernel capabilities which should be dropped + ## + containerSecurityContext: + enabled: true + readOnlyRootFilesystem: false + allowPrivilegeEscalation: false + runAsNonRoot: true + capabilities: + drop: + - ALL + ## @param prometheus.thanos.prometheusUrl Override default prometheus url "http://localhost:9090" + ## + prometheusUrl: "" + ## @param prometheus.thanos.extraArgs Additional arguments passed to the thanos sidecar container + ## extraArgs: + ## - --log.level=debug + ## - --tsdb.path=/data/ + ## + extraArgs: [] + ## @param prometheus.thanos.objectStorageConfig Support mounting a Secret for the objectStorageConfig of the sideCar container. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/thanos.md + ## objectStorageConfig: + ## secretName: thanos-objstore-config + ## secretKey: thanos.yaml + ## + objectStorageConfig: {} + ## ref: https://github.com/thanos-io/thanos/blob/main/docs/components/sidecar.md + ## @param prometheus.thanos.extraVolumeMounts Additional volumeMounts from `prometheus.volumes` for thanos sidecar container + ## extraVolumeMounts: + ## - name: my-secret-volume + ## mountPath: /etc/thanos/secrets/my-secret + ## + extraVolumeMounts: [] + ## Thanos sidecar container resource requests and limits. + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## We usually recommend not to specify default resources and to leave this as a conscious + ## choice for the user. This also increases chances charts run on environments with little + ## resources, such as Minikube. If you do want to specify resources, uncomment the following + ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. + ## @param prometheus.thanos.resources.limits The resources limits for the Thanos sidecar container + ## @param prometheus.thanos.resources.requests The resources requests for the Thanos sidecar container + ## + resources: + ## Example: + ## limits: + ## cpu: 100m + ## memory: 128Mi + limits: {} + ## Examples: + ## requests: + ## cpu: 100m + ## memory: 128Mi + requests: {} + ## Configure extra options for liveness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param prometheus.thanos.livenessProbe.enabled Turn on and off liveness probe + ## @param prometheus.thanos.livenessProbe.path Path of the HTTP service for checking the healthy state + ## @param prometheus.thanos.livenessProbe.initialDelaySeconds Delay before liveness probe is initiated + ## @param prometheus.thanos.livenessProbe.periodSeconds How often to perform the probe + ## @param prometheus.thanos.livenessProbe.timeoutSeconds When the probe times out + ## @param prometheus.thanos.livenessProbe.failureThreshold Minimum consecutive failures for the probe + ## @param prometheus.thanos.livenessProbe.successThreshold Minimum consecutive successes for the probe + ## + livenessProbe: + enabled: true + path: /-/healthy + initialDelaySeconds: 0 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 120 + successThreshold: 1 + ## Configure extra options for readiness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param prometheus.thanos.readinessProbe.enabled Turn on and off readiness probe + ## @param prometheus.thanos.readinessProbe.path Path of the HTTP service for checking the ready state + ## @param prometheus.thanos.readinessProbe.initialDelaySeconds Delay before readiness probe is initiated + ## @param prometheus.thanos.readinessProbe.periodSeconds How often to perform the probe + ## @param prometheus.thanos.readinessProbe.timeoutSeconds When the probe times out + ## @param prometheus.thanos.readinessProbe.failureThreshold Minimum consecutive failures for the probe + ## @param prometheus.thanos.readinessProbe.successThreshold Minimum consecutive successes for the probe + ## + readinessProbe: + enabled: true + path: /-/ready + initialDelaySeconds: 0 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 120 + successThreshold: 1 + ## Thanos Sidecar Service + ## + service: + ## @param prometheus.thanos.service.type Kubernetes service type + ## + type: ClusterIP + ## @param prometheus.thanos.service.port Thanos service port + ## + port: 10901 + ## @param prometheus.thanos.service.clusterIP Specific cluster IP when service type is cluster IP. Use `None` to create headless service by default. + ## Use a "headless" service by default so it returns every pod's IP instead of loadbalancing requests. + ## + clusterIP: None + ## @param prometheus.thanos.service.nodePort Specify the nodePort value for the LoadBalancer and NodePort service types. + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + ## e.g: + ## nodePort: 30901 + ## + nodePort: "" + ## @param prometheus.thanos.service.loadBalancerIP `loadBalancerIP` if service type is `LoadBalancer` + ## Set the LoadBalancer service type to internal only + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + loadBalancerIP: "" + ## @param prometheus.thanos.service.loadBalancerSourceRanges Address that are allowed when svc is `LoadBalancer` + ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## e.g: + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param prometheus.thanos.service.annotations Additional annotations for Prometheus service + ## + annotations: {} + ## @param prometheus.thanos.service.extraPorts Additional ports to expose from the Thanos sidecar container + ## extraPorts: + ## - name: http + ## port: 10902 + ## targetPort: http + ## protocol: tcp + ## + extraPorts: [] + ## @param prometheus.portName Port name used for the pods and governing service. This defaults to web + ## + portName: main +#### +## Alert Manager Config +#### + +## @section Alertmanager Parameters + +## Configuration for alertmanager +## ref: https://prometheus.io/docs/alerting/alertmanager/ +## +alertmanager: + ## @param alertmanager.enabled Deploy Alertmanager to the cluster + ## + enabled: true + ## Service account for Alertmanager to use. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + ## + serviceAccount: + ## @param alertmanager.serviceAccount.create Specify whether to create a ServiceAccount for Alertmanager + ## + create: true + ## @param alertmanager.serviceAccount.name The name of the ServiceAccount to create + ## If not set and create is true, a name is generated using the kube-prometheus.alertmanager.fullname template + name: "" + ## Prometheus Alertmanager pods' Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param alertmanager.podSecurityContext.enabled Enable security context + ## @param alertmanager.podSecurityContext.runAsUser User ID for the container + ## @param alertmanager.podSecurityContext.fsGroup Group ID for the container filesystem + ## + podSecurityContext: + enabled: true + runAsUser: 1001 + fsGroup: 1001 + ## Prometheus Alertmanager container's securityContext + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param alertmanager.containerSecurityContext.enabled Enable container security context + ## @param alertmanager.containerSecurityContext.readOnlyRootFilesystem mount / (root) as a readonly filesystem + ## @param alertmanager.containerSecurityContext.allowPrivilegeEscalation Switch privilegeEscalation possibility on or off + ## @param alertmanager.containerSecurityContext.runAsNonRoot Force the container to run as a non root user + ## @param alertmanager.containerSecurityContext.capabilities.drop [array] Linux Kernel capabilities which should be dropped + ## + containerSecurityContext: + enabled: true + readOnlyRootFilesystem: false + allowPrivilegeEscalation: false + runAsNonRoot: true + capabilities: + drop: + - ALL + ## Configure pod disruption budgets for Alertmanager + ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget + ## @param alertmanager.podDisruptionBudget.enabled Create a pod disruption budget for Alertmanager + ## @param alertmanager.podDisruptionBudget.minAvailable Minimum number / percentage of pods that should remain scheduled + ## @param alertmanager.podDisruptionBudget.maxUnavailable Maximum number / percentage of pods that may be made unavailable + ## + podDisruptionBudget: + enabled: false + minAvailable: 1 + maxUnavailable: "" + ## If true, create a serviceMonitor for alertmanager + ## + serviceMonitor: + ## @param alertmanager.serviceMonitor.enabled Creates a ServiceMonitor to monitor Alertmanager + ## + enabled: true + ## @param alertmanager.serviceMonitor.interval Scrape interval. If not set, the Prometheus default scrape interval is used. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint + ## + interval: "" + ## @param alertmanager.serviceMonitor.metricRelabelings Metric relabeling + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs + ## + metricRelabelings: [] + ## @param alertmanager.serviceMonitor.relabelings Relabel configs + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config + ## + relabelings: [] + ## @param alertmanager.externalUrl External URL used to access Alertmanager + ## e.g: + ## externalUrl: https://alertmanager.example.com + ## + externalUrl: "" + ## @param alertmanager.resources CPU/Memory resource requests/limits for node + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## + resources: {} + ## @param alertmanager.podAffinityPreset Alertmanager Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param alertmanager.podAntiAffinityPreset Alertmanager Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Node affinity preset + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param alertmanager.nodeAffinityPreset.type Alertmanager Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param alertmanager.nodeAffinityPreset.key Alertmanager Node label key to match Ignored if `affinity` is set. + ## E.g. + ## key: "kubernetes.io/e2e-az-name" + ## + key: "" + ## @param alertmanager.nodeAffinityPreset.values Alertmanager Node label values to match. Ignored if `affinity` is set. + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param alertmanager.affinity Alertmanager Affinity for pod assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## Note: alertmanager.podAffinityPreset, alertmanager.podAntiAffinityPreset, and alertmanager.nodeAffinityPreset will be ignored when it's set + ## + affinity: {} + ## @param alertmanager.nodeSelector Alertmanager Node labels for pod assignment + ## ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param alertmanager.tolerations Alertmanager Tolerations for pod assignment + ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## Alertmanager configuration + ## ref: https://prometheus.io/docs/alerting/configuration/#configuration-file + ## @param alertmanager.config [object] Alertmanager configuration directive + ## @skip alertmanager.config.route.group_by + ## @skip alertmanager.config.route.routes + ## @skip alertmanager.config.receivers + ## + config: + global: + resolve_timeout: 5m + route: + group_by: + - job + group_wait: 30s + group_interval: 5m + repeat_interval: 12h + receiver: "null" + routes: + - match: + alertname: Watchdog + receiver: "null" + receivers: + - name: "null" + ## @param alertmanager.externalConfig Alertmanager configuration is created externally. If true, `alertmanager.config` is ignored, and a secret will not be created. + ## Alertmanager requires a secret named `alertmanager-{{ template "kube-prometheus.alertmanager.fullname" . }}` + ## It must contain: + ## alertmanager.yaml: + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/alerting.md#alerting + ## + externalConfig: false + ## @param alertmanager.replicaCount Number of Alertmanager replicas desired + ## + replicaCount: 1 + ## Configure extra options for liveness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param alertmanager.livenessProbe.enabled Turn on and off liveness probe + ## @param alertmanager.livenessProbe.path Path of the HTTP service for checking the healthy state + ## @param alertmanager.livenessProbe.initialDelaySeconds Delay before liveness probe is initiated + ## @param alertmanager.livenessProbe.periodSeconds How often to perform the probe + ## @param alertmanager.livenessProbe.timeoutSeconds When the probe times out + ## @param alertmanager.livenessProbe.failureThreshold Minimum consecutive failures for the probe + ## @param alertmanager.livenessProbe.successThreshold Minimum consecutive successes for the probe + ## + livenessProbe: + enabled: true + path: /-/healthy + initialDelaySeconds: 0 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 120 + successThreshold: 1 + ## Configure extra options for readiness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param alertmanager.readinessProbe.enabled Turn on and off readiness probe + ## @param alertmanager.readinessProbe.path Path of the HTTP service for checking the ready state + ## @param alertmanager.readinessProbe.initialDelaySeconds Delay before readiness probe is initiated + ## @param alertmanager.readinessProbe.periodSeconds How often to perform the probe + ## @param alertmanager.readinessProbe.timeoutSeconds When the probe times out + ## @param alertmanager.readinessProbe.failureThreshold Minimum consecutive failures for the probe + ## @param alertmanager.readinessProbe.successThreshold Minimum consecutive successes for the probe + ## + readinessProbe: + enabled: true + path: /-/ready + initialDelaySeconds: 0 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 120 + successThreshold: 1 + ## @param alertmanager.logLevel Log level for Alertmanager + ## + logLevel: info + ## @param alertmanager.logFormat Log format for Alertmanager + ## + logFormat: logfmt + ## @param alertmanager.podMetadata [object] Standard object's metadata. + ## ref: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata + ## + podMetadata: + labels: {} + annotations: {} + ## @param alertmanager.secrets Secrets that should be mounted into the Alertmanager Pods + ## + secrets: [] + ## @param alertmanager.configMaps ConfigMaps that should be mounted into the Alertmanager Pods + ## + configMaps: [] + ## @param alertmanager.retention Metrics retention days + ## + retention: 240h + ## @param alertmanager.storageSpec Alertmanager StorageSpec for persistent data + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/storage.md + ## + storageSpec: {} + ## Alertmanager persistence parameters + ## + persistence: + ## @param alertmanager.persistence.enabled Use PVCs to persist data. If the storageSpec is provided this will not take effect. + ## If you want to use this configuration make sure the storageSpec is not provided. + ## + enabled: true + ## @param alertmanager.persistence.storageClass Persistent Volume Storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. + ## + storageClass: "" + ## @param alertmanager.persistence.accessModes Persistent Volume Access Modes + ## + accessModes: + - ReadWriteOnce + ## @param alertmanager.persistence.size Persistent Volume Size + ## + size: 999Gi + ## @param alertmanager.paused If true, the Operator won't process any Alertmanager configuration changes + ## + paused: false + ## @param alertmanager.listenLocal ListenLocal makes the Alertmanager server listen on loopback + ## + listenLocal: false + ## @param alertmanager.containers Containers allows injecting additional containers + ## + containers: [] + ## @param alertmanager.volumes Volumes allows configuration of additional volumes. Evaluated as a template + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#alertmanagerspec + ## + volumes: [] + ## @param alertmanager.volumeMounts VolumeMounts allows configuration of additional VolumeMounts. Evaluated as a template + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/pi.md#alertmanagerspec + ## + volumeMounts: [] + ## @param alertmanager.priorityClassName Priority class assigned to the Pods + ## + priorityClassName: "" + ## @param alertmanager.additionalPeers AdditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster + ## + additionalPeers: [] + ## @param alertmanager.routePrefix Prefix used to register routes, overriding externalUrl route + ## Useful for proxies that rewrite URLs. + ## + routePrefix: / + ## @param alertmanager.portName Port name used for the pods and governing service. This defaults to web + ## + portName: alertmanager + ## @param alertmanager.configNamespaceSelector AlertmanagerConfigs to be selected for to merge and configure Alertmanager with. This defaults to {} + ## + configNamespaceSelector: {} + ## @param alertmanager.configSelector Namespaces to be selected for AlertmanagerConfig discovery. If nil, only check own namespace. This defaults to {} + ## + configSelector: {} +#### +## Exporters +#### + +## @section Exporters + +## Exporters +## +exporters: + node-exporter: + ## @param exporters.node-exporter.enabled Enable node-exporter + ## + enabled: true + kube-state-metrics: + ## @param exporters.kube-state-metrics.enabled Enable kube-state-metrics + ## + enabled: true +## @param kube-state-metrics [object] Node Exporter deployment configuration +## +kube-state-metrics: + serviceMonitor: + enabled: true + honorLabels: true +## Component scraping for kubelet and kubelet hosted cAdvisor +## +kubelet: + ## @param kubelet.enabled Create a ServiceMonitor to scrape kubelet service + ## + enabled: true + ## @param kubelet.namespace Namespace where kubelet service is deployed. Related configuration `operator.kubeletService.namespace` + ## + namespace: kube-system + serviceMonitor: + ## @param kubelet.serviceMonitor.https Enable scraping of the kubelet over HTTPS + ## + https: true + ## @param kubelet.serviceMonitor.interval Scrape interval (use by default, falling back to Prometheus' default) + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint + ## + interval: "" + ## @param kubelet.serviceMonitor.metricRelabelings Metric relabeling + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs + ## + metricRelabelings: [] + ## @param kubelet.serviceMonitor.relabelings Relabel configs + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config + ## + relabelings: [] + ## @param kubelet.serviceMonitor.cAdvisorMetricRelabelings Metric relabeling for scraping cAdvisor + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs + ## + cAdvisorMetricRelabelings: [] + ## @param kubelet.serviceMonitor.cAdvisorRelabelings Relabel configs for scraping cAdvisor + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs + ## + cAdvisorRelabelings: [] +## Component scraping the kube-apiserver +## +kubeApiServer: + ## @param kubeApiServer.enabled Create a ServiceMonitor to scrape kube-apiserver service + ## + enabled: true + serviceMonitor: + ## @param kubeApiServer.serviceMonitor.interval Scrape interval. If not set, the Prometheus default scrape interval is used. + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint + ## + interval: "" + ## @param kubeApiServer.serviceMonitor.metricRelabelings Metric relabeling + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs + ## + metricRelabelings: [] + ## @param kubeApiServer.serviceMonitor.relabelings Relabel configs + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config + ## + relabelings: [] +## Component scraping the kube-controller-manager +## +kubeControllerManager: + ## @param kubeControllerManager.enabled Create a ServiceMonitor to scrape kube-controller-manager service + ## + enabled: false + ## @param kubeControllerManager.endpoints 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 + ## + endpoints: [] + ## @param kubeControllerManager.namespace Namespace where kube-controller-manager service is deployed. + ## + namespace: kube-system + ## Service ports and selector information + ## @param kubeControllerManager.service.enabled Whether or not to create a Service object for kube-controller-manager + ## @param kubeControllerManager.service.port Listening port of the kube-controller-manager Service object + ## @param kubeControllerManager.service.targetPort Port to target on the kube-controller-manager Pods. This should be the port that kube-controller-manager is exposing metrics on + ## @param kubeControllerManager.service.selector Optional PODs Label selector for the service + ## + service: + enabled: true + port: 10252 + targetPort: 10252 + ## selector: + ## component: kube-controller-manager + ## + selector: {} + serviceMonitor: + ## @param kubeControllerManager.serviceMonitor.interval Scrape interval (use by default, falling back to Prometheus' default) + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint + ## + interval: "" + ## @param kubeControllerManager.serviceMonitor.https Enable scraping kube-controller-manager over https + ## Requires proper certs (not self-signed) and delegated authentication/authorization checks + ## + https: false + ## @param kubeControllerManager.serviceMonitor.insecureSkipVerify Skip TLS certificate validation when scraping + ## + insecureSkipVerify: "" + ## @param kubeControllerManager.serviceMonitor.serverName Name of the server to use when validating TLS certificate + serverName: "" + ## @param kubeControllerManager.serviceMonitor.metricRelabelings Metric relabeling + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs + ## + metricRelabelings: [] + ## @param kubeControllerManager.serviceMonitor.relabelings Relabel configs + ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config + ## + relabelings: [] +## Component scraping kube scheduler +## +kubeScheduler: + ## @param kubeScheduler.enabled Create a ServiceMonitor to scrape kube-scheduler service + ## + enabled: false + ## @param kubeScheduler.endpoints 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 + ## + endpoints: [] + ## @param kubeScheduler.namespace Namespace where kube-scheduler service is deployed. + ## + namespace: kube-system + ## If using kubeScheduler.endpoints only the port and targetPort are used + ## @param kubeScheduler.service.enabled Whether or not to create a Service object for kube-scheduler + ## @param kubeScheduler.service.port Listening port of the kube scheduler Service object + ## @param kubeScheduler.service.targetPort Port to target on the kube scheduler Pods. This should be the port that kube scheduler is exposing metrics on + ## @param kubeScheduler.service.selector Optional PODs Label selector for the service + ## + service: + enabled: true + port: 10251 + targetPort: 10251 + ## selector: + ## component: kube-scheduler + ## + selector: {} + serviceMonitor: + ## @param kubeScheduler.serviceMonitor.interval Scrape interval (use by default, falling back to Prometheus' default) + ## + interval: "" + ## @param kubeScheduler.serviceMonitor.https Enable scraping kube-scheduler over https + ## Requires proper certs (not self-signed) and delegated authentication/authorization checks + ## + https: false + ## @param kubeScheduler.serviceMonitor.insecureSkipVerify Skip TLS certificate validation when scraping + ## + insecureSkipVerify: "" + ## @param kubeScheduler.serviceMonitor.serverName Name of the server to use when validating TLS certificate + ## + serverName: "" + ## @param kubeScheduler.serviceMonitor.metricRelabelings Metric relabeling + ## metricRelabelings: + ## - action: keep + ## regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + ## sourceLabels: [__name__] + ## + metricRelabelings: [] + ## @param kubeScheduler.serviceMonitor.relabelings Relabel configs + ## relabelings: + ## - sourceLabels: [__meta_kubernetes_pod_node_name] + ## separator: ; + ## regex: ^(.*)$ + ## targetLabel: nodename + ## replacement: $1 + ## action: replace + ## + relabelings: [] +## Component scraping coreDns +## +coreDns: + ## @param coreDns.enabled Create a ServiceMonitor to scrape coredns service + ## + enabled: true + ## @param coreDns.namespace Namespace where core dns service is deployed. + ## + namespace: kube-system + ## Create a ServiceMonitor to scrape coredns service + ## @param coreDns.service.enabled Whether or not to create a Service object for coredns + ## @param coreDns.service.port Listening port of the coredns Service object + ## @param coreDns.service.targetPort Port to target on the coredns Pods. This should be the port that coredns is exposing metrics on + ## @param coreDns.service.selector Optional PODs Label selector for the service + ## + service: + enabled: true + port: 9153 + targetPort: 9153 + ## selector: + ## component: kube-dns + ## + selector: {} + serviceMonitor: + ## @param coreDns.serviceMonitor.interval Scrape interval. If not set, the Prometheus default scrape interval is used. + ## + interval: "" + ## @param coreDns.serviceMonitor.metricRelabelings Metric relabel configs to apply to samples before ingestion. + ## metricRelabelings: + ## - action: keep + ## regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' + ## sourceLabels: [__name__] + ## + metricRelabelings: [] + ## @param coreDns.serviceMonitor.relabelings Relabel configs to apply to samples before ingestion. + ## relabelings: + ## - sourceLabels: [__meta_kubernetes_pod_node_name] + ## separator: ; + ## regex: ^(.*)$ + ## targetLabel: nodename + ## replacement: $1 + ## action: replace + ## + relabelings: [] +## Component scraping the kube-proxy +## +kubeProxy: + ## @param kubeProxy.enabled Create a ServiceMonitor to scrape the kube-proxy Service + ## + enabled: false +portal: + open: + enabled: true +updated: true diff --git a/enterprise/prometheus/16.4.8/questions.yaml b/enterprise/prometheus/16.4.8/questions.yaml new file mode 100644 index 00000000000..d1bb294a995 --- /dev/null +++ b/enterprise/prometheus/16.4.8/questions.yaml @@ -0,0 +1,1806 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Backup Configuration + description: Configure Velero Backup Schedule + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" +questions: + - variable: operator + group: "App Configuration" + label: "Operator Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: logLevel + label: "Log Level" + description: "Log level for Operator" + schema: + type: string + default: "info" + - variable: prometheus + group: "App Configuration" + label: "Prometheus Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: logLevel + label: "Log Level" + description: "Log level for Prometheus" + schema: + type: string + default: "info" + - variable: retention + label: "Retention" + description: "Metrics retention days" + schema: + type: string + default: "31d" + - variable: retentionSize + label: "Max Retention Size" + description: "Maximum size of metrics" + schema: + type: string + default: "" + - variable: scrapeInterval + label: "Scrape interval" + description: "Interval between consecutive scrapes" + schema: + type: string + default: "15s" + - variable: evaluationInterval + label: "Evaluation interval" + description: "Interval between consecutive evaluations" + schema: + type: string + default: "30s" + - variable: disableCompaction + label: "Disable Compaction" + description: "Disable the compaction of the Prometheus TSDB" + schema: + type: boolean + default: false + - variable: walCompression + label: "WAL Compression" + description: "Enable compression of the write-ahead log using Snappy" + schema: + type: boolean + default: false + - variable: enableRemoteWriteReceiver + label: "Remote Write Receiver" + description: "Enable Prometheus to be used as a receiver for the Prometheus remote write protocol" + schema: + type: boolean + default: false + - variable: remoteWrite + label: "Remote Write" + schema: + type: list + default: [] + items: + - variable: remoteWriteEntry + label: Remote Write Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: url + label: URL + description: Remote write destination URL + schema: + type: string + required: true + default: "" + - variable: basicAuth + label: Basic Auth + description: Basic authentication for remote write + schema: + type: dict + attrs: + - variable: username + label: Username + description: Basic auth username + schema: + type: string + required: true + default: "" + - variable: password + label: Password + description: Basic auth password + schema: + type: string + required: false + default: "" + - variable: exporters + group: "App Configuration" + label: "Exporter Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: node-exporter + label: "node-exporter" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: true + - variable: kube-state-metrics + label: "Kube-State-Metrics" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: true + - variable: alertmanager + group: "App Configuration" + label: "Alertmanager Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: logLevel + label: "Log Level" + description: "Log level for Alertmanager" + schema: + type: string + default: "info" + - variable: retention + label: "Retention" + description: "Metrics retention days" + schema: + type: string + default: "240h" + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The serving the Prometheus WebUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 9090 + required: true + - variable: alertmanager + label: "alertmanager Service" + description: "alertmanager service " + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: alertmanager + label: "alertmanager Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 9093 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: scaleExternalInterface + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + additional_attrs: true + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + additional_attrs: true + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: tcp + enum: + - value: http + description: HTTP + - value: https + description: HTTPS + - value: tcp + description: TCP + - value: udp + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name (Optional) + description: Defaults to chart name + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description (Optional) + description: Defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: icon + label: Icon (Optional) + description: Defaults to chart icon + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: widget + label: Widget Settings + schema: + type: dict + additional_attrs: true + show_if: [["enabled", "=", true]] + attrs: + - variable: enabled + label: Enable Widget + description: When disabled all widget annotations are skipped. + schema: + type: boolean + default: true + - variable: custom + label: Options + schema: + type: dict + additional_attrs: true + attrs: + - variable: key + label: API-key (key) + schema: + type: string + default: "" + - variable: customkv + label: Custom Options + schema: + type: list + default: [] + items: + - variable: option + label: Option + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + default: "" + required: true + - variable: value + label: Value + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: overrideService + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["certificateIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: namespace + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description + description: defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP diff --git a/enterprise/prometheus/16.4.8/templates/NOTES.txt b/enterprise/prometheus/16.4.8/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/enterprise/prometheus/16.4.8/templates/_helpers.tpl b/enterprise/prometheus/16.4.8/templates/_helpers.tpl new file mode 100644 index 00000000000..1f44049ac4c --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/_helpers.tpl @@ -0,0 +1,210 @@ +{{/* Name suffixed with operator */}} +{{- define "kube-prometheus.fullname" -}} +{{- printf "%s" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Name suffixed with operator */}} +{{- define "kube-prometheus.name" -}} +{{- printf "%s" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Name suffixed with operator */}} +{{- define "kube-prometheus.operator.name" -}} +{{- printf "%s-operator" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Name suffixed with prometheus */}} +{{- define "kube-prometheus.prometheus.name" -}} +{{- printf "%s-prometheus" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Name suffixed with alertmanager */}} +{{- define "kube-prometheus.alertmanager.name" -}} +{{- printf "%s-alertmanager" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Name suffixed with thanos */}} +{{- define "kube-prometheus.thanos.name" -}} +{{- printf "%s-thanos" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Fullname suffixed with operator */}} +{{- define "kube-prometheus.operator.fullname" -}} +{{- printf "%s-operator" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Fullname suffixed with prometheus */}} +{{- define "kube-prometheus.prometheus.fullname" -}} +{{- printf "%s-prometheus" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Fullname suffixed with alertmanager */}} +{{- define "kube-prometheus.alertmanager.fullname" -}} +{{- printf "%s-alertmanager" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} +{{- end }} + +{{/* Fullname suffixed with thanos */}} +{{- define "kube-prometheus.thanos.fullname" -}} +{{- printf "%s-thanos" (include "kube-prometheus.prometheus.fullname" .) -}} +{{- end }} + +{{- define "kube-prometheus.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Common Labels +*/}} +{{- define "kube-prometheus.labels" -}} + {{- $labels := (include "tc.v1.common.lib.metadata.allLabels" $ | fromYaml) -}} + {{- with (include "tc.v1.common.lib.metadata.render" (dict "rootCtx" $ "labels" $labels) | trim) }} + {{- . | nindent 0 }} + {{- end }} +{{- if .Values.global.labels }} +{{ toYaml .Values.global.labels }} +{{- end }} +{{- end -}} + +{{/* +Labels for operator +*/}} +{{- define "kube-prometheus.operator.labels" -}} + {{- $labels := (include "tc.v1.common.lib.metadata.allLabels" $ | fromYaml) -}} + {{- with (include "tc.v1.common.lib.metadata.render" (dict "rootCtx" $ "labels" $labels) | trim) }} + {{- . | nindent 0 }} + {{- end }} +app.kubernetes.io/component: operator +{{- end -}} + +{{/* +Labels for prometheus +*/}} +{{- define "kube-prometheus.prometheus.labels" -}} + {{- $labels := (include "tc.v1.common.lib.metadata.allLabels" $ | fromYaml) -}} + {{- with (include "tc.v1.common.lib.metadata.render" (dict "rootCtx" $ "labels" $labels) | trim) }} + {{- . | nindent 0 }} + {{- end }} +app.kubernetes.io/component: prometheus +{{- end -}} + +{{/* +Labels for alertmanager +*/}} +{{- define "kube-prometheus.alertmanager.labels" -}} + {{- $labels := (include "tc.v1.common.lib.metadata.allLabels" $ | fromYaml) -}} + {{- with (include "tc.v1.common.lib.metadata.render" (dict "rootCtx" $ "labels" $labels) | trim) }} + {{- . | nindent 0 }} + {{- end }} +app.kubernetes.io/component: alertmanager +{{- end -}} + +{{/* +matchLabels for operator +*/}} +{{- define "kube-prometheus.operator.matchLabels" -}} +{{ include "tc.v1.common.lib.metadata.selectorLabels" (dict "rootCtx" $ )}} +app.kubernetes.io/component: operator +{{- end -}} + +{{/* +matchLabels for prometheus +*/}} +{{- define "kube-prometheus.prometheus.matchLabels" -}} +{{ include "tc.v1.common.lib.metadata.selectorLabels" (dict "rootCtx" $ )}} +app.kubernetes.io/component: prometheus +{{- end -}} + +{{/* +matchLabels for alertmanager +*/}} +{{- define "kube-prometheus.alertmanager.matchLabels" -}} +{{ include "tc.v1.common.lib.metadata.selectorLabels" (dict "rootCtx" $ )}} +app.kubernetes.io/component: alertmanager +{{- end -}} + +{{/* +Return the proper Prometheus Operator image name +*/}} +{{- define "kube-prometheus.image" -}} +{{ printf "%s:%s" .Values.image.repository (default .Chart.AppVersion .Values.image.tag) | quote }} +{{- end -}} + +{{/* +Return the proper Prometheus Operator Reloader image name +*/}} +{{- define "kube-prometheus.prometheusConfigReloader.image" -}} +{{- include "kube-prometheus.image" . -}} +{{- end -}} + +{{/* +Return the proper Prometheus Image name +*/}} +{{- define "kube-prometheus.prometheus.image" -}} +{{ printf "%s:%s" .Values.image.repository (default .Chart.AppVersion .Values.image.tag) | quote }} +{{- end -}} + +{{/* +Return the proper Thanos Image name +*/}} +{{- define "kube-prometheus.prometheus.thanosImage" -}} +{{ printf "%s:%s" .Values.thanosImage.repository (default .Chart.AppVersion .Values.thanosImage.tag) | quote }} +{{- end -}} + +{{/* +Return the proper Alertmanager Image name +*/}} +{{- define "kube-prometheus.alertmanager.image" -}} +{{ printf "%s:%s" .Values.alertmanagerImage.repository (default .Chart.AppVersion .Values.alertmanagerImage.tag) | quote }} +{{- end -}} + +{{/* +Return the proper Docker Image Registry Secret Names +*/}} +{{- define "kube-prometheus.imagePullSecrets" -}} +{{- end -}} + +{{/* +Create the name of the operator service account to use +*/}} +{{- define "kube-prometheus.operator.serviceAccountName" -}} +{{- if .Values.operator.serviceAccount.create -}} + {{ default (include "kube-prometheus.operator.fullname" .) .Values.operator.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.operator.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Create the name of the prometheus service account to use +*/}} +{{- define "kube-prometheus.prometheus.serviceAccountName" -}} +{{- if .Values.prometheus.serviceAccount.create -}} + {{ default (include "kube-prometheus.prometheus.fullname" .) .Values.prometheus.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.prometheus.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Create the name of the alertmanager service account to use +*/}} +{{- define "kube-prometheus.alertmanager.serviceAccountName" -}} +{{- if .Values.alertmanager.serviceAccount.create -}} + {{ default (include "kube-prometheus.alertmanager.fullname" .) .Values.alertmanager.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.alertmanager.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Compile all warnings into a single message, and call fail. +*/}} +{{- define "kube-prometheus.validateValues" -}} +{{- $messages := list -}} +{{- $messages := without $messages "" -}} +{{- $message := join "\n" $messages -}} + +{{- if $message -}} +{{- printf "\nVALUES VALIDATION:\n%s" $message | fail -}} +{{- end -}} +{{- end -}} diff --git a/enterprise/prometheus/16.4.8/templates/alertmanager/_alertmanager.tpl b/enterprise/prometheus/16.4.8/templates/alertmanager/_alertmanager.tpl new file mode 100644 index 00000000000..ed5e24e9da6 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/alertmanager/_alertmanager.tpl @@ -0,0 +1,174 @@ +{{- define "prometheus.alertmanager.alertmanager" -}} +{{- if .Values.alertmanager.enabled }} +--- +apiVersion: monitoring.coreos.com/v1 +kind: Alertmanager +metadata: + name: {{ template "kube-prometheus.alertmanager.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.alertmanager.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.alertmanager.replicaCount }} + serviceAccountName: {{ template "kube-prometheus.alertmanager.serviceAccountName" . }} + {{- if .Values.alertmanager.image }} + image: {{ template "kube-prometheus.alertmanager.image" . }} + {{- end }} + listenLocal: {{ .Values.alertmanager.listenLocal }} + {{- if index .Values.alertmanager "externalUrl" }} + externalUrl: "{{ .Values.alertmanager.externalUrl }}" + {{- else if and .Values.ingress.alertmanager.enabled .Values.ingress.alertmanager.hosts }} + externalUrl: {{ if .Values.ingress.alertmanager.tls }}https{{else}}http{{ end }}://{{ (index .Values.ingress.alertmanager.hosts 0).name }}{{ .Values.alertmanager.routePrefix }} + {{- else }} + externalUrl: http://{{ template "kube-prometheus.alertmanager.fullname" . }}.{{ .Release.Namespace }}:{{ .Values.service.alertmanager.ports.alertmanager.port }}{{ .Values.alertmanager.routePrefix }} + {{- end }} + portName: "{{ .Values.alertmanager.portName }}" + paused: {{ .Values.alertmanager.paused }} + logFormat: {{ .Values.alertmanager.logFormat }} + logLevel: {{ .Values.alertmanager.logLevel }} + retention: {{ .Values.alertmanager.retention }} + {{- if .Values.alertmanager.secrets }} + secrets: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.secrets "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.alertmanager.configMaps }} + configMaps: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.configMaps "context" $) | nindent 4 }} + {{- end }} + resources: {{- toYaml .Values.alertmanager.resources | nindent 4 }} + routePrefix: "{{ .Values.alertmanager.routePrefix }}" + {{- if .Values.alertmanager.podSecurityContext.enabled }} + securityContext: {{- omit .Values.alertmanager.podSecurityContext "enabled" | toYaml | nindent 4 }} + {{- end }} + {{- if .Values.alertmanager.storageSpec }} + storage: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.storageSpec "context" $) | nindent 4 }} + {{- else }} + {{- if .Values.alertmanager.persistence.enabled }} + storage: + volumeClaimTemplate: + spec: + accessModes: + {{- range .Values.alertmanager.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.alertmanager.persistence.size | quote }} + {{- with (include "tc.v1.common.lib.storage.storageClassName" ( dict "rootCtx" . "objectData" .Values.prometheus.persistence )) | trim }} + storageClassName: {{ . }} + {{- end }} + {{- end }} + {{- end }} + {{- if or .Values.alertmanager.podMetadata.labels .Values.alertmanager.podMetadata.annotations (eq .Values.alertmanager.podAntiAffinityPreset "soft") (eq .Values.alertmanager.podAntiAffinityPreset "hard") }} + podMetadata: + labels: + {{- if .Values.alertmanager.podMetadata.labels }} + {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.podMetadata.labels "context" $) | nindent 6 }} + {{- end }} + {{- if or (eq .Values.alertmanager.podAntiAffinityPreset "soft") (eq .Values.alertmanager.podAntiAffinityPreset "hard") }} + {{- include "kube-prometheus.alertmanager.matchLabels" . | nindent 6 }} + {{- end }} + {{- if .Values.alertmanager.podMetadata.annotations }} + annotations: + {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.podMetadata.annotations "context" $) | nindent 6 }} + {{- end }} + {{- end }} + {{- if .Values.alertmanager.affinity }} + affinity: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.affinity "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.alertmanager.nodeSelector }} + nodeSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.nodeSelector "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.alertmanager.tolerations }} + tolerations: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.tolerations "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.alertmanager.volumes }} + volumes: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.volumes "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.alertmanager.volumeMounts }} + volumeMounts: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.volumeMounts "context" $) | nindent 4 }} + {{- end }} +{{- include "kube-prometheus.imagePullSecrets" . | indent 2 }} + {{- if or .Values.alertmanager.containers .Values.alertmanager.containerSecurityContext.enabled .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled }} + containers: + {{- if or .Values.alertmanager.containerSecurityContext.enabled .Values.alertmanager.livenessProbe.enabled .Values.alertmanager.readinessProbe.enabled }} + ## This monkey patching is needed until the securityContexts are + ## directly patchable via the CRD. + ## ref: https://github.com/prometheus-operator/prometheus-operator/issues/3947 + ## currently implemented with strategic merge + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/strategic-merge-patch.md + - name: alertmanager + {{- if .Values.alertmanager.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.alertmanager.containerSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + {{- if .Values.alertmanager.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: {{ .Values.alertmanager.livenessProbe.path }} + port: alertmanager + scheme: HTTP + initialDelaySeconds: {{ .Values.alertmanager.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.alertmanager.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.alertmanager.livenessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.alertmanager.livenessProbe.failureThreshold }} + successThreshold: {{ .Values.alertmanager.livenessProbe.successThreshold }} + {{- end }} + {{- if .Values.alertmanager.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: {{ .Values.alertmanager.readinessProbe.path }} + port: alertmanager + scheme: HTTP + initialDelaySeconds: {{ .Values.alertmanager.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.alertmanager.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.alertmanager.readinessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.alertmanager.readinessProbe.failureThreshold }} + successThreshold: {{ .Values.alertmanager.readinessProbe.successThreshold }} + {{- end }} + {{- end }} + {{- if or .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled .Values.operator.prometheusConfigReloader.livenessProbe.enabled .Values.operator.prometheusConfigReloader.readinessProbe.enabled }} + ## This monkey patching is needed until the securityContexts are + ## directly patchable via the CRD. + ## ref: https://github.com/prometheus-operator/prometheus-operator/issues/3947 + ## currently implemented with strategic merge + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/strategic-merge-patch.md + - name: config-reloader + {{- if .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.operator.prometheusConfigReloader.containerSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + {{- if .Values.operator.prometheusConfigReloader.livenessProbe.enabled }} + livenessProbe: + tcpSocket: + port: reloader-web + initialDelaySeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.operator.prometheusConfigReloader.livenessProbe.failureThreshold }} + successThreshold: {{ .Values.operator.prometheusConfigReloader.livenessProbe.successThreshold }} + {{- end }} + {{- if .Values.operator.prometheusConfigReloader.readinessProbe.enabled }} + readinessProbe: + tcpSocket: + port: reloader-web + initialDelaySeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.operator.prometheusConfigReloader.readinessProbe.failureThreshold }} + successThreshold: {{ .Values.operator.prometheusConfigReloader.readinessProbe.successThreshold }} + {{- end }} + {{- end }} + {{- if .Values.alertmanager.containers }} + {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.containers "context" $) | nindent 4 }} + {{- end }} + {{- end }} + {{- if .Values.alertmanager.priorityClassName }} + priorityClassName: {{ .Values.alertmanager.priorityClassName }} + {{- end }} + {{- if .Values.alertmanager.additionalPeers }} + additionalPeers: {{ .Values.alertmanager.additionalPeers }} + {{- end }} + {{- if .Values.alertmanager.configNamespaceSelector }} + alertmanagerConfigNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.configNamespaceSelector "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.alertmanager.configSelector }} + alertmanagerConfigSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.configSelector "context" $) | nindent 4 }} + {{- end }} +{{- end }} +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/alertmanager/secrets.yaml b/enterprise/prometheus/16.4.8/templates/alertmanager/secrets.yaml new file mode 100644 index 00000000000..9a6f518f35c --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/alertmanager/secrets.yaml @@ -0,0 +1,13 @@ +{{- if (and .Values.alertmanager.enabled (not .Values.alertmanager.externalConfig) ) }} +apiVersion: v1 +kind: Secret +metadata: + name: alertmanager-{{ template "kube-prometheus.alertmanager.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.alertmanager.labels" . | nindent 4 }} +data: + alertmanager.yaml: {{ toYaml .Values.alertmanager.config | b64enc | quote }} +{{- range $key, $val := .Values.alertmanager.templateFiles }} + {{ $key }}: {{ $val | b64enc | quote }} +{{- end }} +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/alertmanager/serviceaccount.yaml b/enterprise/prometheus/16.4.8/templates/alertmanager/serviceaccount.yaml new file mode 100644 index 00000000000..a6f438889a2 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/alertmanager/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if and .Values.alertmanager.enabled .Values.alertmanager.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "kube-prometheus.alertmanager.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.alertmanager.labels" . | nindent 4 }} + {{- if index .Values.alertmanager.serviceAccount "annotations" }} + annotations: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.serviceAccount.annotations "context" $) | nindent 4 }} + {{- end }} +{{- include "kube-prometheus.imagePullSecrets" . }} +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/alertmanager/servicemonitor.yaml b/enterprise/prometheus/16.4.8/templates/alertmanager/servicemonitor.yaml new file mode 100644 index 00000000000..ef0e02d3875 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/alertmanager/servicemonitor.yaml @@ -0,0 +1,26 @@ +{{- if and .Values.alertmanager.enabled .Values.alertmanager.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus.alertmanager.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.alertmanager.labels" . | nindent 4 }} +spec: + selector: + matchLabels: {{- include "kube-prometheus.alertmanager.matchLabels" . | nindent 6 }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} + endpoints: + - port: http + {{- if .Values.alertmanager.serviceMonitor.interval }} + interval: {{ .Values.alertmanager.serviceMonitor.interval }} + {{- end }} + path: {{ trimSuffix "/" .Values.alertmanager.routePrefix }}/metrics + {{- if .Values.alertmanager.serviceMonitor.metricRelabelings }} + metricRelabelings: {{- include "tc.v1.common.tplvalues.render" ( dict "value" .Values.alertmanager.serviceMonitor.metricRelabelings "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.alertmanager.serviceMonitor.relabelings }} + relabelings: {{- toYaml .Values.alertmanager.serviceMonitor.relabelings | nindent 8 }} + {{- end }} +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/common.yaml b/enterprise/prometheus/16.4.8/templates/common.yaml new file mode 100644 index 00000000000..61364503a70 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/common.yaml @@ -0,0 +1,13 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . }} + +{{- include "prometheus.prometheus.prometheus" . }} +{{- include "prometheus.prometheus.additionalprometheusrules" . }} +{{- include "prometheus.prometheus.additionalscrapejobs" . }} +{{- include "prometheus.prometheus.servicemonitor" . }} + +{{- include "prometheus.alertmanager.alertmanager" . }} + + +{{/* Render the templates */}} +{{ include "tc.v1.common.loader.apply" . }} diff --git a/enterprise/prometheus/16.4.8/templates/exporters/core-dns/service.yaml b/enterprise/prometheus/16.4.8/templates/exporters/core-dns/service.yaml new file mode 100644 index 00000000000..359c945de46 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/exporters/core-dns/service.yaml @@ -0,0 +1,22 @@ +{{- if and .Values.coreDns.enabled .Values.coreDns.service.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "kube-prometheus.fullname" . }}-coredns + namespace: {{ .Values.coreDns.namespace }} + labels: {{- include "kube-prometheus.labels" . | nindent 4 }} + app.kubernetes.io/component: {{ template "kube-prometheus.fullname" . }}-coredns +spec: + clusterIP: None + ports: + - name: http-metrics + port: {{ .Values.coreDns.service.port }} + protocol: TCP + targetPort: {{ .Values.coreDns.service.targetPort }} + selector: + {{- if .Values.coreDns.service.selector }} +{{ toYaml .Values.coreDns.service.selector | indent 4 }} + {{- else}} + k8s-app: kube-dns + {{- end}} +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/exporters/core-dns/servicemonitor.yaml b/enterprise/prometheus/16.4.8/templates/exporters/core-dns/servicemonitor.yaml new file mode 100644 index 00000000000..8906b87f8e1 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/exporters/core-dns/servicemonitor.yaml @@ -0,0 +1,29 @@ +{{- if .Values.coreDns.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus.fullname" . }}-coredns + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.labels" . | nindent 4 }} + app.kubernetes.io/component: {{ template "kube-prometheus.fullname" . }}-coredns +spec: + jobLabel: k8s-app + selector: + matchLabels: + app.kubernetes.io/component: {{ template "kube-prometheus.fullname" . }}-coredns + namespaceSelector: + matchNames: + - {{ .Values.coreDns.namespace }} + endpoints: + - port: http-metrics + {{- if .Values.coreDns.serviceMonitor.interval}} + interval: {{ .Values.coreDns.serviceMonitor.interval }} + {{- end }} + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + {{- if .Values.coreDns.serviceMonitor.metricRelabelings }} + metricRelabelings: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.coreDns.serviceMonitor.metricRelabelings "context" $) | nindent 6 }} + {{- end }} + {{- if .Values.coreDns.serviceMonitor.relabelings }} + relabelings: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.coreDns.serviceMonitor.relabelings "context" $) | nindent 6 }} + {{- end }} +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/exporters/kube-apiserver/servicemonitor.yaml b/enterprise/prometheus/16.4.8/templates/exporters/kube-apiserver/servicemonitor.yaml new file mode 100644 index 00000000000..7cfbb53f379 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/exporters/kube-apiserver/servicemonitor.yaml @@ -0,0 +1,35 @@ +{{- if .Values.kubeApiServer.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus.fullname" . }}-apiserver + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.labels" . | nindent 4 }} + app.kubernetes.io/component: apiserver +spec: + jobLabel: component + selector: + matchLabels: + component: apiserver + provider: kubernetes + namespaceSelector: + matchNames: + - default + endpoints: + - port: https + scheme: https + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + serverName: kubernetes + insecureSkipVerify: true + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + {{- if .Values.kubeApiServer.serviceMonitor.interval }} + interval: {{ .Values.kubeApiServer.serviceMonitor.interval }} + {{- end }} + {{- if .Values.kubeApiServer.serviceMonitor.metricRelabelings }} + metricRelabelings: {{- include "tc.v1.common.tplvalues.render" ( dict "value" .Values.kubeApiServer.serviceMonitor.metricRelabelings "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.kubeApiServer.serviceMonitor.relabelings }} + relabelings: {{- toYaml .Values.kubeApiServer.serviceMonitor.relabelings | nindent 8 }} + {{- end }} +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/exporters/kube-controller-manager/endpoints.yaml b/enterprise/prometheus/16.4.8/templates/exporters/kube-controller-manager/endpoints.yaml new file mode 100644 index 00000000000..13aa60ebf66 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/exporters/kube-controller-manager/endpoints.yaml @@ -0,0 +1,18 @@ +{{- if and .Values.kubeControllerManager.enabled .Values.kubeControllerManager.endpoints }} +apiVersion: v1 +kind: Endpoints +metadata: + name: {{ template "kube-prometheus.fullname" . }}-kube-controller-manager + namespace: {{ .Values.kubeControllerManager.namespace }} + labels: {{- include "kube-prometheus.labels" . | nindent 4 }} + app.kubernetes.io/component: kube-controller-manager +subsets: + - addresses: + {{- range .Values.kubeControllerManager.endpoints }} + - ip: {{ . }} + {{- end }} + ports: + - name: http-metrics + port: {{ .Values.kubeControllerManager.service.port }} + protocol: TCP +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/exporters/kube-controller-manager/service.yaml b/enterprise/prometheus/16.4.8/templates/exporters/kube-controller-manager/service.yaml new file mode 100644 index 00000000000..6a455359832 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/exporters/kube-controller-manager/service.yaml @@ -0,0 +1,25 @@ +{{- if and .Values.kubeControllerManager.enabled .Values.kubeControllerManager.service.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "kube-prometheus.fullname" . }}-kube-controller-manager + namespace: {{ .Values.kubeControllerManager.namespace }} + labels: {{- include "kube-prometheus.labels" . | nindent 4 }} + app.kubernetes.io/component: {{ template "kube-prometheus.fullname" . }}-kube-controller-manager +spec: + clusterIP: None + ports: + - name: http-metrics + port: {{ .Values.kubeControllerManager.service.port }} + protocol: TCP + targetPort: {{ .Values.kubeControllerManager.service.targetPort }} +{{- if .Values.kubeControllerManager.endpoints }}{{- else }} + selector: + {{- if .Values.kubeControllerManager.service.selector }} +{{ toYaml .Values.kubeControllerManager.service.selector | indent 4 }} + {{- else}} + component: kube-controller-manager + {{- end}} +{{- end }} + type: ClusterIP +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/exporters/kube-controller-manager/servicemonitor.yaml b/enterprise/prometheus/16.4.8/templates/exporters/kube-controller-manager/servicemonitor.yaml new file mode 100644 index 00000000000..d3f56c49914 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/exporters/kube-controller-manager/servicemonitor.yaml @@ -0,0 +1,40 @@ +{{- if .Values.kubeControllerManager.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus.fullname" . }}-kube-controller-manager + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.labels" . | nindent 4 }} + app.kubernetes.io/component: {{ template "kube-prometheus.fullname" . }}-kube-controller-manager +spec: + jobLabel: component + selector: + matchLabels: + app.kubernetes.io/component: {{ template "kube-prometheus.fullname" . }}-kube-controller-manager + namespaceSelector: + matchNames: + - {{ .Values.kubeControllerManager.namespace }} + endpoints: + - port: http-metrics + {{- if .Values.kubeControllerManager.serviceMonitor.interval }} + interval: {{ .Values.kubeControllerManager.serviceMonitor.interval }} + {{- end }} + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + {{- if .Values.kubeControllerManager.serviceMonitor.https }} + scheme: https + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + {{- if .Values.kubeControllerManager.serviceMonitor.insecureSkipVerify }} + insecureSkipVerify: {{ .Values.kubeControllerManager.serviceMonitor.insecureSkipVerify }} + {{- end }} + {{- if .Values.kubeControllerManager.serviceMonitor.serverName }} + serverName: {{ .Values.kubeControllerManager.serviceMonitor.serverName }} + {{- end }} + {{- end }} + {{- if .Values.kubeControllerManager.serviceMonitor.metricRelabelings }} + metricRelabelings: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.kubeControllerManager.serviceMonitor.metricRelabelings "context" $) | nindent 6 }} + {{- end }} + {{- if .Values.kubeControllerManager.serviceMonitor.relabelings }} + relabelings: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.kubeControllerManager.serviceMonitor.relabelings "context" $) | nindent 6 }} + {{- end }} +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/exporters/kube-scheduler/endpoints.yaml b/enterprise/prometheus/16.4.8/templates/exporters/kube-scheduler/endpoints.yaml new file mode 100644 index 00000000000..dde3d8b9110 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/exporters/kube-scheduler/endpoints.yaml @@ -0,0 +1,18 @@ +{{- if and .Values.kubeScheduler.enabled .Values.kubeScheduler.endpoints }} +apiVersion: v1 +kind: Endpoints +metadata: + name: {{ template "kube-prometheus.fullname" . }}-kube-scheduler + namespace: {{ .Values.kubeScheduler.namespace }} + labels: {{- include "kube-prometheus.labels" . | nindent 4 }} + app.kubernetes.io/component: kube-scheduler +subsets: + - addresses: + {{- range .Values.kubeScheduler.endpoints }} + - ip: {{ . }} + {{- end }} + ports: + - name: http-metrics + port: {{ .Values.kubeScheduler.service.port }} + protocol: TCP +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/exporters/kube-scheduler/service.yaml b/enterprise/prometheus/16.4.8/templates/exporters/kube-scheduler/service.yaml new file mode 100644 index 00000000000..aad5969f5fd --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/exporters/kube-scheduler/service.yaml @@ -0,0 +1,25 @@ +{{- if and .Values.kubeScheduler.enabled .Values.kubeScheduler.service.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "kube-prometheus.fullname" . }}-kube-scheduler + namespace: {{ .Values.kubeScheduler.namespace }} + labels: {{- include "kube-prometheus.labels" . | nindent 4 }} + app.kubernetes.io/component: {{ template "kube-prometheus.fullname" . }}-kube-scheduler +spec: + clusterIP: None + ports: + - name: http-metrics + port: {{ .Values.kubeScheduler.service.port}} + protocol: TCP + targetPort: {{ .Values.kubeScheduler.service.targetPort}} +{{- if .Values.kubeScheduler.endpoints }}{{- else }} + selector: + {{- if .Values.kubeScheduler.service.selector }} +{{ toYaml .Values.kubeScheduler.service.selector | indent 4 }} + {{- else}} + component: kube-scheduler + {{- end}} +{{- end }} + type: ClusterIP +{{- end -}} diff --git a/enterprise/prometheus/16.4.8/templates/exporters/kube-scheduler/servicemonitor.yaml b/enterprise/prometheus/16.4.8/templates/exporters/kube-scheduler/servicemonitor.yaml new file mode 100644 index 00000000000..7cbe29f86d7 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/exporters/kube-scheduler/servicemonitor.yaml @@ -0,0 +1,40 @@ +{{- if .Values.kubeScheduler.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus.fullname" . }}-kube-scheduler + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.labels" . | nindent 4 }} + app.kubernetes.io/component: {{ template "kube-prometheus.fullname" . }}-kube-scheduler +spec: + jobLabel: component + selector: + matchLabels: + app.kubernetes.io/component: {{ template "kube-prometheus.fullname" . }}-kube-scheduler + namespaceSelector: + matchNames: + - {{ .Values.kubeScheduler.namespace }} + endpoints: + - port: http-metrics + {{- if .Values.kubeScheduler.serviceMonitor.interval }} + interval: {{ .Values.kubeScheduler.serviceMonitor.interval }} + {{- end }} + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + {{- if .Values.kubeScheduler.serviceMonitor.https }} + scheme: https + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + {{- if .Values.kubeScheduler.serviceMonitor.insecureSkipVerify }} + insecureSkipVerify: {{ .Values.kubeScheduler.serviceMonitor.insecureSkipVerify }} + {{- end}} + {{- if .Values.kubeScheduler.serviceMonitor.serverName }} + serverName: {{ .Values.kubeScheduler.serviceMonitor.serverName }} + {{- end}} + {{- end}} + {{- if .Values.kubeScheduler.serviceMonitor.metricRelabelings }} + metricRelabelings: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.kubeScheduler.serviceMonitor.metricRelabelings "context" $) | nindent 6 }} + {{- end }} + {{- if .Values.kubeScheduler.serviceMonitor.relabelings }} + metricRelabelings: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.kubeScheduler.serviceMonitor.relabelings "context" $) | nindent 6 }} + {{- end }} +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/exporters/kubelet/servicemonitor.yaml b/enterprise/prometheus/16.4.8/templates/exporters/kubelet/servicemonitor.yaml new file mode 100644 index 00000000000..b109d78c453 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/exporters/kubelet/servicemonitor.yaml @@ -0,0 +1,85 @@ +{{- if .Values.kubelet.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus.fullname" . }}-kubelet + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.labels" . | nindent 4 }} + app.kubernetes.io/component: kubelet +spec: + jobLabel: k8s-app + selector: + matchLabels: + k8s-app: kubelet + namespaceSelector: + matchNames: + - {{ .Values.kubelet.namespace }} + endpoints: + {{- if .Values.kubelet.serviceMonitor.https }} + - port: https-metrics + scheme: https + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + serverName: kubernetes + insecureSkipVerify: true + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + honorLabels: true + {{- if .Values.kubelet.serviceMonitor.interval }} + interval: {{ .Values.kubelet.serviceMonitor.interval }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.metricRelabelings }} + metricRelabelings: {{- include "tc.v1.common.tplvalues.render" ( dict "value" .Values.kubelet.serviceMonitor.metricRelabelings "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.relabelings }} + relabelings: {{- toYaml .Values.kubelet.serviceMonitor.relabelings | nindent 8 }} + {{- end }} + - port: https-metrics + path: /metrics/cadvisor + scheme: https + tlsConfig: + caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + serverName: kubernetes + insecureSkipVerify: true + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + honorLabels: true + {{- if .Values.kubelet.serviceMonitor.interval }} + interval: {{ .Values.kubelet.serviceMonitor.interval }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings }} + metricRelabelings: {{- include "tc.v1.common.tplvalues.render" ( dict "value" .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.cAdvisorRelabelings }} + relabelings: {{- toYaml .Values.kubelet.serviceMonitor.cAdvisorRelabelings | nindent 8 }} + {{- end }} + {{- else }} + - port: http-metrics + scheme: http + tlsConfig: + insecureSkipVerify: false + honorLabels: true + {{- if .Values.kubelet.serviceMonitor.interval }} + interval: {{ .Values.kubelet.serviceMonitor.interval }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.metricRelabelings }} + metricRelabelings: {{- include "tc.v1.common.tplvalues.render" ( dict "value" .Values.kubelet.serviceMonitor.metricRelabelings "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.relabelings }} + relabelings: {{- toYaml .Values.kubelet.serviceMonitor.relabelings | nindent 8 }} + {{- end }} + - port: http-metrics + path: /metrics/cadvisor + scheme: http + tlsConfig: + insecureSkipVerify: false + honorLabels: true + {{- if .Values.kubelet.serviceMonitor.interval }} + interval: {{ .Values.kubelet.serviceMonitor.interval }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings }} + metricRelabelings: {{- include "tc.v1.common.tplvalues.render" ( dict "value" .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.kubelet.serviceMonitor.cAdvisorRelabelings }} + relabelings: {{- toYaml .Values.kubelet.serviceMonitor.cAdvisorRelabelings | nindent 8 }} + {{- end }} + {{- end }} +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/prometheus/_additionalPrometheusRules.tpl b/enterprise/prometheus/16.4.8/templates/prometheus/_additionalPrometheusRules.tpl new file mode 100644 index 00000000000..121048d87ce --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/prometheus/_additionalPrometheusRules.tpl @@ -0,0 +1,15 @@ +{{- define "prometheus.prometheus.additionalprometheusrules" -}} +{{- if and .Values.prometheus.enabled .Values.prometheus.additionalPrometheusRules}} + {{- range .Values.prometheus.additionalPrometheusRules }} +--- +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ template "kube-prometheus.name" $ }}-{{ .name }} + namespace: {{ $.Release.Namespace }} + labels: {{ include "kube-prometheus.prometheus.labels" $ | nindent 4 }} +spec: + groups: {{- toYaml .groups | nindent 4 }} + {{- end }} +{{- end }} +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/prometheus/_additionalScrapeJobs.tpl b/enterprise/prometheus/16.4.8/templates/prometheus/_additionalScrapeJobs.tpl new file mode 100644 index 00000000000..3c5f85140a4 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/prometheus/_additionalScrapeJobs.tpl @@ -0,0 +1,13 @@ +{{- define "prometheus.prometheus.additionalscrapejobs" -}} +{{- if (and .Values.prometheus.additionalScrapeConfigs.enabled (eq .Values.prometheus.additionalScrapeConfigs.type "internal") ) }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: additional-scrape-jobs-{{ template "kube-prometheus.prometheus.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} +data: + scrape-jobs.yaml: {{ include "tc.v1.common.tplvalues.render" ( dict "value" .Values.prometheus.additionalScrapeConfigs.internal.jobList "context" $ ) | b64enc | quote }} +{{- end }} +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/prometheus/_prometheus.tpl b/enterprise/prometheus/16.4.8/templates/prometheus/_prometheus.tpl new file mode 100644 index 00000000000..b5bd3bcb292 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/prometheus/_prometheus.tpl @@ -0,0 +1,366 @@ +{{- define "prometheus.prometheus.prometheus" -}} +{{- if .Values.prometheus.enabled }} +--- +apiVersion: monitoring.coreos.com/v1 +kind: Prometheus +metadata: + name: {{ template "kube-prometheus.prometheus.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.prometheus.replicaCount }} + serviceAccountName: {{ template "kube-prometheus.prometheus.serviceAccountName" . }} + {{- if .Values.prometheus.serviceMonitorSelector }} + serviceMonitorSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.serviceMonitorSelector "context" $) | nindent 4 }} + {{- else }} + serviceMonitorSelector: {} + {{- end }} + {{- if .Values.prometheus.podMonitorSelector }} + podMonitorSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.podMonitorSelector "context" $) | nindent 4 }} + {{- else }} + podMonitorSelector: {} + {{- end }} + {{- if .Values.prometheus.probeSelector }} + probeSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.probeSelector "context" $) | nindent 4 }} + {{- else }} + probeSelector: {} + {{- end }} + {{- if .Values.prometheus.scrapeConfigSelector }} + scrapeConfigSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.scrapeConfigSelector "context" $) | nindent 4 }} + {{- else }} + scrapeConfigSelector: {} + {{- end }} + alerting: + alertmanagers: + {{- if .Values.prometheus.alertingEndpoints }} + {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.alertingEndpoints "context" $) | nindent 6 }} + {{- else if .Values.alertmanager.enabled }} + - namespace: {{ .Release.Namespace }} + name: {{ template "kube-prometheus.alertmanager.fullname" . }} + port: http + pathPrefix: "{{ .Values.alertmanager.routePrefix }}" + {{- else }} + [] + {{- end }} + {{- if .Values.prometheus.image }} + image: {{ template "kube-prometheus.prometheus.image" . }} + {{- end }} + {{- if .Values.prometheus.externalLabels }} + externalLabels: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.externalLabels "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.prometheusExternalLabelNameClear }} + prometheusExternalLabelName: "" + {{- else if .Values.prometheus.prometheusExternalLabelName }} + prometheusExternalLabelName: "{{ .Values.prometheus.prometheusExternalLabelName }}" + {{- end }} + {{- if .Values.prometheus.replicaExternalLabelNameClear }} + replicaExternalLabelName: "" + {{- else if .Values.prometheus.replicaExternalLabelName }} + replicaExternalLabelName: "{{ .Values.prometheus.replicaExternalLabelName }}" + {{- end }} + {{- if index .Values.prometheus "externalUrl" }} + externalUrl: "{{ .Values.prometheus.externalUrl }}" + {{- else if and .Values.ingress.main.enabled .Values.ingress.main.hosts }} + externalUrl: {{ if .Values.ingress.main.tls }}https{{else}}http{{ end }}://{{ (index .Values.ingress.main.hosts 0).name }}{{ .Values.prometheus.routePrefix }} + {{- else }} + externalUrl: http://{{ template "kube-prometheus.prometheus.fullname" . }}.{{ .Release.Namespace }}:9090{{ .Values.prometheus.routePrefix }} + {{- end }} + paused: {{ .Values.prometheus.paused }} + logLevel: {{ .Values.prometheus.logLevel }} + logFormat: {{ .Values.prometheus.logFormat }} + listenLocal: {{ .Values.prometheus.listenLocal }} + enableAdminAPI: {{ .Values.prometheus.enableAdminAPI }} + {{- if .Values.prometheus.enableFeatures }} + enableFeatures: + {{- range .Values.prometheus.enableFeatures }} + - {{ . | quote }} + {{- end }} + {{- end }} + {{- if .Values.prometheus.scrapeInterval }} + scrapeInterval: {{ .Values.prometheus.scrapeInterval }} + {{- end }} + {{- if .Values.prometheus.evaluationInterval }} + evaluationInterval: {{ .Values.prometheus.evaluationInterval }} + {{- end }} + {{- if .Values.prometheus.resources }} + resources: {{- toYaml .Values.prometheus.resources | nindent 4 }} + {{- end }} + retention: {{ .Values.prometheus.retention }} + {{- if .Values.prometheus.retentionSize }} + retentionSize: {{ .Values.prometheus.retentionSize }} + {{- end }} + {{- if .Values.prometheus.disableCompaction }} + disableCompaction: {{ .Values.prometheus.disableCompaction }} + {{- end }} + {{- if .Values.prometheus.enableRemoteWriteReceiver }} + enableRemoteWriteReceiver: {{ .Values.prometheus.enableRemoteWriteReceiver }} + {{- end }} + {{- if .Values.prometheus.walCompression }} + walCompression: {{ .Values.prometheus.walCompression }} + {{- end }} + portName: "{{ .Values.prometheus.portName }}" + routePrefix: "{{ .Values.prometheus.routePrefix }}" + {{- if .Values.prometheus.secrets }} + secrets: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.secrets "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.configMaps }} + configMaps: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.configMaps "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.serviceMonitorNamespaceSelector }} + serviceMonitorNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.serviceMonitorNamespaceSelector "context" $) | nindent 4 }} + {{- else }} + serviceMonitorNamespaceSelector: {} + {{- end }} + {{- if .Values.prometheus.podMonitorNamespaceSelector }} + podMonitorNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.podMonitorNamespaceSelector "context" $) | nindent 4 }} + {{- else }} + podMonitorNamespaceSelector: {} + {{- end }} + {{- if .Values.prometheus.probeNamespaceSelector }} + probeNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.probeNamespaceSelector "context" $) | nindent 4 }} + {{- else }} + probeNamespaceSelector: {} + {{- end }} + {{- if .Values.prometheus.scrapeConfigNamespaceSelector }} + scrapeConfigNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.scrapeConfigNamespaceSelector "context" $) | nindent 4 }} + {{- else }} + scrapeConfigNamespaceSelector: {} + {{- end }} + {{- if .Values.prometheus.remoteRead }} + remoteRead: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.remoteRead "context" $) | nindent 4 }} + {{- end }} + {{- with .Values.prometheus.remoteWrite }} + remoteWrite: + {{- tpl (toYaml .) $ | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.podSecurityContext.enabled }} + securityContext: {{- omit .Values.prometheus.podSecurityContext "enabled" | toYaml | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.ruleNamespaceSelector }} + ruleNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.ruleNamespaceSelector "context" $) | nindent 4 }} + {{- else }} + ruleNamespaceSelector: {} + {{- end }} + {{- if .Values.prometheus.ruleSelector }} + ruleSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.ruleSelector "context" $) | nindent 4 }} + {{- else }} + ruleSelector: {} + {{- end }} + {{- if .Values.prometheus.storageSpec }} + storage: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.storageSpec "context" $) | nindent 4 }} + {{- else if .Values.prometheus.persistence.enabled }} + storage: + volumeClaimTemplate: + spec: + accessModes: + {{- range .Values.prometheus.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.prometheus.persistence.size | quote }} + {{- with (include "tc.v1.common.lib.storage.storageClassName" ( dict "rootCtx" . "objectData" .Values.prometheus.persistence )) | trim }} + storageClassName: {{ . }} + {{- end }} + {{- end }} + {{- if or .Values.prometheus.podMetadata.labels .Values.prometheus.podMetadata.annotations (eq .Values.prometheus.podAntiAffinityPreset "soft") (eq .Values.prometheus.podAntiAffinityPreset "hard") }} + podMetadata: + labels: + {{- if .Values.prometheus.podMetadata.labels }} + {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.podMetadata.labels "context" $) | nindent 6 }} + {{- end }} + {{- if or (eq .Values.prometheus.podAntiAffinityPreset "soft") (eq .Values.prometheus.podAntiAffinityPreset "hard") }} + {{- include "kube-prometheus.prometheus.matchLabels" . | nindent 6 }} + {{- end }} + {{- if .Values.prometheus.podMetadata.annotations }} + annotations: + {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.podMetadata.annotations "context" $) | nindent 6 }} + {{- end }} + {{- end }} + {{- if .Values.prometheus.querySpec }} + query: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.querySpec "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.affinity }} + affinity: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.affinity "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.nodeSelector }} + nodeSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.nodeSelector "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.tolerations }} + tolerations: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.tolerations "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.volumes }} + volumes: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.volumes "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.prometheus.volumeMounts }} + volumeMounts: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.volumeMounts "context" $) | nindent 4 }} + {{- end }} + {{- if or .Values.prometheus.additionalScrapeConfigs.enabled .Values.prometheus.additionalScrapeConfigsExternal.enabled }} + additionalScrapeConfigs: + {{- if and .Values.prometheus.additionalScrapeConfigs.enabled (eq .Values.prometheus.additionalScrapeConfigs.type "external") }} + name: {{ .Values.prometheus.additionalScrapeConfigs.external.name }} + key: {{ .Values.prometheus.additionalScrapeConfigs.external.key }} + {{- else if and .Values.prometheus.additionalScrapeConfigs.enabled (eq .Values.prometheus.additionalScrapeConfigs.type "internal") }} + name: additional-scrape-jobs-{{ template "kube-prometheus.prometheus.fullname" . }} + key: scrape-jobs.yaml + {{- else if and (not .Values.prometheus.additionalScrapeConfigs.enabled) .Values.prometheus.additionalScrapeConfigsExternal.enabled }} + name: {{ .Values.prometheus.additionalScrapeConfigsExternal.name }} + key: {{ .Values.prometheus.additionalScrapeConfigsExternal.key }} + {{- end }} + {{- end }} + {{- if .Values.prometheus.additionalAlertRelabelConfigsExternal.enabled }} + additionalAlertRelabelConfigs: + name: {{ .Values.prometheus.additionalAlertRelabelConfigsExternal.name }} + key: {{ .Values.prometheus.additionalAlertRelabelConfigsExternal.key }} + {{- end }} +{{- include "kube-prometheus.imagePullSecrets" . | indent 2 }} + {{- if or .Values.prometheus.containers .Values.prometheus.thanos.create .Values.prometheus.containerSecurityContext.enabled .Values.prometheus.containerSecurityContext.enabled .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled }} + containers: + {{- if .Values.prometheus.thanos.create }} + - name: thanos-sidecar + image: {{ template "kube-prometheus.prometheus.thanosImage" . }} + imagePullPolicy: {{ .Values.prometheus.thanos.image.pullPolicy }} + args: + - sidecar + - --prometheus.url={{ default "http://localhost:9090" .Values.prometheus.thanos.prometheusUrl }} + - --grpc-address=0.0.0.0:10901 + - --http-address=0.0.0.0:10902 + - --tsdb.path=/prometheus/ + {{- if .Values.prometheus.thanos.objectStorageConfig }} + - --objstore.config=$(OBJSTORE_CONFIG) + {{- end }} + {{- if .Values.prometheus.thanos.extraArgs }} + {{ toYaml .Values.prometheus.thanos.extraArgs | indent 8 | trim }} + {{- end }} + {{- if .Values.prometheus.thanos.objectStorageConfig }} + env: + - name: OBJSTORE_CONFIG + valueFrom: + secretKeyRef: + name: {{ .Values.prometheus.thanos.objectStorageConfig.secretName }} + key: {{ .Values.prometheus.thanos.objectStorageConfig.secretKey | default "thanos.yaml" }} + {{- end }} + {{- if .Values.prometheus.thanos.resources }} + resources: {{- toYaml .Values.prometheus.thanos.resources | nindent 8 }} + {{- end }} + ports: + - name: thanos + containerPort: 10901 + protocol: TCP + - name: http + containerPort: 10902 + protocol: TCP + volumeMounts: + - mountPath: /prometheus + name: prometheus-{{ template "kube-prometheus.prometheus.fullname" . }}-db + {{- if not (.Values.prometheus.storageSpec.disableMountSubPath | default (not .Values.prometheus.persistence.enabled)) }} + subPath: prometheus-db + {{- end }} + {{- if .Values.prometheus.thanos.extraVolumeMounts }} + {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.thanos.extraVolumeMounts "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.prometheus.thanos.containerSecurityContext.enabled }} + # yamllint disable rule:indentation + securityContext: {{- omit .Values.prometheus.thanos.containerSecurityContext "enabled" | toYaml | nindent 8 }} + # yamllint enable rule:indentation + {{- end }} + {{- if .Values.prometheus.thanos.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: {{ .Values.prometheus.thanos.livenessProbe.path }} + port: http + scheme: HTTP + initialDelaySeconds: {{ .Values.prometheus.thanos.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.prometheus.thanos.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.prometheus.thanos.livenessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.prometheus.thanos.livenessProbe.failureThreshold }} + successThreshold: {{ .Values.prometheus.thanos.livenessProbe.successThreshold }} + {{- end }} + {{- if .Values.prometheus.thanos.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: {{ .Values.prometheus.thanos.readinessProbe.path }} + port: http + scheme: HTTP + initialDelaySeconds: {{ .Values.prometheus.thanos.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.prometheus.thanos.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.prometheus.thanos.readinessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.prometheus.thanos.readinessProbe.failureThreshold }} + successThreshold: {{ .Values.prometheus.thanos.readinessProbe.successThreshold }} + {{- end }} + {{- end }} + {{- if or .Values.prometheus.containerSecurityContext.enabled .Values.prometheus.livenessProbe.enabled .Values.prometheus.readinessProbe.enabled }} + ## This monkey patching is needed until the securityContexts are + ## directly patchable via the CRD. + ## ref: https://github.com/prometheus-operator/prometheus-operator/issues/3947 + ## currently implemented with strategic merge + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/strategic-merge-patch.md + - name: prometheus + {{- if .Values.prometheus.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.prometheus.containerSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + {{- if .Values.prometheus.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: {{ .Values.prometheus.livenessProbe.path }} + port: main + scheme: HTTP + initialDelaySeconds: {{ .Values.prometheus.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.prometheus.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.prometheus.livenessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.prometheus.livenessProbe.failureThreshold }} + successThreshold: {{ .Values.prometheus.livenessProbe.successThreshold }} + {{- end }} + {{- if .Values.prometheus.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: {{ .Values.prometheus.readinessProbe.path }} + port: main + scheme: HTTP + initialDelaySeconds: {{ .Values.prometheus.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.prometheus.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.prometheus.readinessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.prometheus.readinessProbe.failureThreshold }} + successThreshold: {{ .Values.prometheus.readinessProbe.successThreshold }} + {{- end }} + {{- end }} + {{- if or .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled .Values.operator.prometheusConfigReloader.livenessProbe.enabled .Values.operator.prometheusConfigReloader.readinessProbe.enabled }} + ## This monkey patching is needed until the securityContexts are + ## directly patchable via the CRD. + ## ref: https://github.com/prometheus-operator/prometheus-operator/issues/3947 + ## currently implemented with strategic merge + ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/strategic-merge-patch.md + - name: config-reloader + {{- if .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.operator.prometheusConfigReloader.containerSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + {{- if .Values.operator.prometheusConfigReloader.livenessProbe.enabled }} + livenessProbe: + tcpSocket: + port: reloader-web + initialDelaySeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.operator.prometheusConfigReloader.livenessProbe.failureThreshold }} + successThreshold: {{ .Values.operator.prometheusConfigReloader.livenessProbe.successThreshold }} + {{- end }} + {{- if .Values.operator.prometheusConfigReloader.readinessProbe.enabled }} + readinessProbe: + tcpSocket: + port: reloader-web + initialDelaySeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.periodSeconds }} + timeoutSeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.timeoutSeconds }} + failureThreshold: {{ .Values.operator.prometheusConfigReloader.readinessProbe.failureThreshold }} + successThreshold: {{ .Values.operator.prometheusConfigReloader.readinessProbe.successThreshold }} + {{- end }} + {{- end }} + {{- if .Values.prometheus.containers }} + {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.containers "context" $) | nindent 4 }} + {{- end }} + {{- end }} + {{- if .Values.prometheus.priorityClassName }} + priorityClassName: {{ .Values.prometheus.priorityClassName }} + {{- end }} +{{- end }} +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/prometheus/_servicemonitor.tpl b/enterprise/prometheus/16.4.8/templates/prometheus/_servicemonitor.tpl new file mode 100644 index 00000000000..20744f2c924 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/prometheus/_servicemonitor.tpl @@ -0,0 +1,29 @@ +{{- define "prometheus.prometheus.servicemonitor" -}} +{{- if and .Values.prometheus.enabled .Values.prometheus.serviceMonitor.enabled }} +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "kube-prometheus.prometheus.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} +spec: + selector: + matchLabels: {{- include "kube-prometheus.prometheus.matchLabels" . | nindent 6 }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} + endpoints: + - port: http + {{- if .Values.prometheus.serviceMonitor.interval }} + interval: {{ .Values.prometheus.serviceMonitor.interval }} + {{- end }} + path: {{ trimSuffix "/" .Values.prometheus.routePrefix }}/metrics + {{- if .Values.prometheus.serviceMonitor.metricRelabelings }} + metricRelabelings: {{- include "tc.v1.common.tplvalues.render" ( dict "value" .Values.prometheus.serviceMonitor.metricRelabelings "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.prometheus.serviceMonitor.relabelings }} + relabelings: {{- toYaml .Values.prometheus.serviceMonitor.relabelings | nindent 8 }} + {{- end }} +{{- end }} +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/prometheus/clusterrole.yaml b/enterprise/prometheus/16.4.8/templates/prometheus/clusterrole.yaml new file mode 100644 index 00000000000..ae96e2d45f8 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/prometheus/clusterrole.yaml @@ -0,0 +1,41 @@ +{{- if .Values.prometheus.enabled -}} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ template "kube-prometheus.prometheus.fullname" . }} + labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} +rules: + - apiGroups: + - "" + resources: + - nodes/metrics + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - nodes + - nodes/proxy + - services + - endpoints + - pods + verbs: + - "get" + - "list" + - "watch" + - apiGroups: + - extensions + - "networking.k8s.io" + resources: + - ingresses + verbs: + - get + - list + - watch + - nonResourceURLs: + - "/metrics" + verbs: + - "get" +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/prometheus/clusterrolebinding.yaml b/enterprise/prometheus/16.4.8/templates/prometheus/clusterrolebinding.yaml new file mode 100644 index 00000000000..7ca10743f4a --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/prometheus/clusterrolebinding.yaml @@ -0,0 +1,15 @@ +{{- if .Values.prometheus.enabled }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ template "kube-prometheus.prometheus.fullname" . }} + labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ template "kube-prometheus.prometheus.fullname" . }} +subjects: + - kind: ServiceAccount + name: {{ template "kube-prometheus.prometheus.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} +{{- end }} diff --git a/enterprise/prometheus/16.4.8/templates/prometheus/serviceaccount.yaml b/enterprise/prometheus/16.4.8/templates/prometheus/serviceaccount.yaml new file mode 100644 index 00000000000..39539fc1191 --- /dev/null +++ b/enterprise/prometheus/16.4.8/templates/prometheus/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if and .Values.prometheus.enabled .Values.prometheus.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "kube-prometheus.prometheus.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} + {{- if index .Values.prometheus.serviceAccount "annotations" }} + annotations: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.serviceAccount.annotations "context" $) | nindent 4 }} + {{- end }} +{{- include "kube-prometheus.imagePullSecrets" . }} +{{- end }} diff --git a/enterprise/prometheus/16.4.8/values.yaml b/enterprise/prometheus/16.4.8/values.yaml new file mode 100644 index 00000000000..e69de29bb2d