add prometheus
parent
af626a82b5
commit
9e3e29ba6b
@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
name: prometheus
|
||||||
|
version: 6.3.0
|
||||||
|
appVersion: 2.21.0
|
||||||
|
description: Prometheus is a monitoring system and time series database.
|
||||||
|
home: https://prometheus.io/
|
||||||
|
icon: https://raw.githubusercontent.com/prometheus/prometheus.github.io/master/assets/prometheus_logo-cb55bb5c346.png
|
||||||
|
sources:
|
||||||
|
- https://github.com/prometheus/alertmanager
|
||||||
|
- https://github.com/prometheus/prometheus
|
||||||
|
- https://github.com/prometheus/pushgateway
|
||||||
|
- https://github.com/prometheus/node_exporter
|
||||||
|
- https://github.com/kubernetes/kube-state-metrics
|
||||||
|
maintainers:
|
||||||
|
- name: Espen Myhre
|
||||||
|
email: esmy@buypass.no
|
||||||
|
- name: Marius Ensrud
|
||||||
|
email: maen@buypass.no
|
||||||
|
engine: gotpl
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
approvers:
|
||||||
|
- Espen Myhre
|
||||||
|
reviewers:
|
||||||
|
- Espen Myhre
|
||||||
@ -0,0 +1,227 @@
|
|||||||
|
## Introduction
|
||||||
|
|
||||||
|
This chart bootstraps a [Prometheus](https://prometheus.io/) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
The following table lists the configurable parameters of the Prometheus chart and their default values.
|
||||||
|
|
||||||
|
Parameter | Description | Default
|
||||||
|
--------- | ----------- | -------
|
||||||
|
`alertmanager.enabled` | If true, create alertmanager | `true`
|
||||||
|
`alertmanager.name` | alertmanager container name | `alertmanager`
|
||||||
|
`alertmanager.image.repository` | alertmanager container image repository | `prom/alertmanager`
|
||||||
|
`alertmanager.image.tag` | alertmanager container image tag | `v0.15.2`
|
||||||
|
`alertmanager.image.pullPolicy` | alertmanager container image pull policy | `IfNotPresent`
|
||||||
|
`alertmanager.prefixURL` | The prefix slug at which the server can be accessed | ``
|
||||||
|
`alertmanager.baseURL` | The external url at which the server can be accessed | `/`
|
||||||
|
`alertmanager.extraArgs` | Additional alertmanager container arguments | `{}`
|
||||||
|
`alertmanager.configMapOverrideName` | Prometheus alertmanager ConfigMap override where full-name is `{{.Release.Name}}-{{.Values.alertmanager.configMapOverrideName}}` and setting this value will prevent the default alertmanager ConfigMap from being generated | `""`
|
||||||
|
`alertmanager.ingress.enabled` | If true, alertmanager Ingress will be created | `false`
|
||||||
|
`alertmanager.ingress.annotations` | alertmanager Ingress annotations | `{}`
|
||||||
|
`alertmanager.ingress.hosts` | alertmanager Ingress hostnames | `[]`
|
||||||
|
`alertmanager.ingress.tls` | alertmanager Ingress TLS configuration (YAML) | `[]`
|
||||||
|
`alertmanager.nodeSelector` | node labels for alertmanager pod assignment | `{}`
|
||||||
|
`alertmanager.tolerations` | node taints to tolerate (requires Kubernetes >=1.6) | `[]`
|
||||||
|
`alertmanager.persistentVolume.enabled` | If true, alertmanager will create a Persistent Volume Claim | `true`
|
||||||
|
`alertmanager.persistentVolume.accessModes` | alertmanager data Persistent Volume access modes | `[ReadWriteOnce]`
|
||||||
|
`alertmanager.persistentVolume.annotations` | Annotations for alertmanager Persistent Volume Claim | `{}`
|
||||||
|
`alertmanager.persistentVolume.existingClaim` | alertmanager data Persistent Volume existing claim name | `""`
|
||||||
|
`alertmanager.persistentVolume.mountPath` | alertmanager data Persistent Volume mount root path | `/data`
|
||||||
|
`alertmanager.persistentVolume.size` | alertmanager data Persistent Volume size | `2Gi`
|
||||||
|
`alertmanager.persistentVolume.storageClass` | alertmanager data Persistent Volume Storage Class | `unset`
|
||||||
|
`alertmanager.persistentVolume.subPath` | Subdirectory of alertmanager data Persistent Volume to mount | `""`
|
||||||
|
`alertmanager.podAnnotations` | annotations to be added to alertmanager pods | `{}`
|
||||||
|
`alertmanager.replicaCount` | desired number of alertmanager pods | `1`
|
||||||
|
`alertmanager.resources` | alertmanager pod resource requests & limits | `{}`
|
||||||
|
`alertmanager.service.annotations` | annotations for alertmanager service | `{}`
|
||||||
|
`alertmanager.service.clusterIP` | internal alertmanager cluster service IP | `""`
|
||||||
|
`alertmanager.service.externalIPs` | alertmanager service external IP addresses | `[]`
|
||||||
|
`alertmanager.service.loadBalancerIP` | IP address to assign to load balancer (if supported) | `""`
|
||||||
|
`alertmanager.service.loadBalancerSourceRanges` | list of IP CIDRs allowed access to load balancer (if supported) | `[]`
|
||||||
|
`alertmanager.service.servicePort` | alertmanager service port | `80`
|
||||||
|
`alertmanager.service.type` | type of alertmanager service to create | `ClusterIP`
|
||||||
|
`alertmanagerFiles.alertmanager.yml` | Prometheus alertmanager configuration | example configuration
|
||||||
|
`configmapReload.name` | configmap-reload container name | `configmap-reload`
|
||||||
|
`configmapReload.image.repository` | configmap-reload container image repository | `jimmidyson/configmap-reload`
|
||||||
|
`configmapReload.image.tag` | configmap-reload container image tag | `v0.2.2`
|
||||||
|
`configmapReload.image.pullPolicy` | configmap-reload container image pull policy | `IfNotPresent`
|
||||||
|
`configmapReload.extraArgs` | Additional configmap-reload container arguments | `{}`
|
||||||
|
`configmapReload.extraConfigmapMounts` | Additional configmap-reload configMap mounts | `[]`
|
||||||
|
`configmapReload.resources` | configmap-reload pod resource requests & limits | `{}`
|
||||||
|
`initChownData.enabled` | If false, don't reset data ownership at startup | true
|
||||||
|
`initChownData.name` | init-chown-data container name | `init-chown-data`
|
||||||
|
`initChownData.image.repository` | init-chown-data container image repository | `busybox`
|
||||||
|
`initChownData.image.tag` | init-chown-data container image tag | `latest`
|
||||||
|
`initChownData.image.pullPolicy` | init-chown-data container image pull policy | `IfNotPresent`
|
||||||
|
`initChownData.resources` | init-chown-data pod resource requests & limits | `{}`
|
||||||
|
`kubeStateMetrics.enabled` | If true, create kube-state-metrics | `true`
|
||||||
|
`kubeStateMetrics.name` | kube-state-metrics container name | `kube-state-metrics`
|
||||||
|
`kubeStateMetrics.image.repository` | kube-state-metrics container image repository| `k8s.gcr.io/kube-state-metrics`
|
||||||
|
`kubeStateMetrics.image.tag` | kube-state-metrics container image tag | `v1.4.0`
|
||||||
|
`kubeStateMetrics.image.pullPolicy` | kube-state-metrics container image pull policy | `IfNotPresent`
|
||||||
|
`kubeStateMetrics.args` | kube-state-metrics container arguments | `{}`
|
||||||
|
`kubeStateMetrics.nodeSelector` | node labels for kube-state-metrics pod assignment | `{}`
|
||||||
|
`kubeStateMetrics.podAnnotations` | annotations to be added to kube-state-metrics pods | `{}`
|
||||||
|
`kubeStateMetrics.tolerations` | node taints to tolerate (requires Kubernetes >=1.6) | `[]`
|
||||||
|
`kubeStateMetrics.replicaCount` | desired number of kube-state-metrics pods | `1`
|
||||||
|
`kubeStateMetrics.resources` | kube-state-metrics resource requests and limits (YAML) | `{}`
|
||||||
|
`kubeStateMetrics.service.annotations` | annotations for kube-state-metrics service | `{prometheus.io/scrape: "true"}`
|
||||||
|
`kubeStateMetrics.service.clusterIP` | internal kube-state-metrics cluster service IP | `None`
|
||||||
|
`kubeStateMetrics.service.externalIPs` | kube-state-metrics service external IP addresses | `[]`
|
||||||
|
`kubeStateMetrics.service.loadBalancerIP` | IP address to assign to load balancer (if supported) | `""`
|
||||||
|
`kubeStateMetrics.service.loadBalancerSourceRanges` | list of IP CIDRs allowed access to load balancer (if supported) | `[]`
|
||||||
|
`kubeStateMetrics.service.servicePort` | kube-state-metrics service port | `80`
|
||||||
|
`kubeStateMetrics.service.type` | type of kube-state-metrics service to create | `ClusterIP`
|
||||||
|
`nodeExporter.enabled` | If true, create node-exporter | `true`
|
||||||
|
`nodeExporter.name` | node-exporter container name | `node-exporter`
|
||||||
|
`nodeExporter.image.repository` | node-exporter container image repository| `prom/node-exporter`
|
||||||
|
`nodeExporter.image.tag` | node-exporter container image tag | `v0.16.0`
|
||||||
|
`nodeExporter.image.pullPolicy` | node-exporter container image pull policy | `IfNotPresent`
|
||||||
|
`nodeExporter.extraArgs` | Additional node-exporter container arguments | `{}`
|
||||||
|
`nodeExporter.extraHostPathMounts` | Additional node-exporter hostPath mounts | `[]`
|
||||||
|
`nodeExporter.extraConfigmapMounts` | Additional node-exporter configMap mounts | `[]`
|
||||||
|
`nodeExporter.nodeSelector` | node labels for node-exporter pod assignment | `{}`
|
||||||
|
`nodeExporter.podAnnotations` | annotations to be added to node-exporter pods | `{}`
|
||||||
|
`nodeExporter.tolerations` | node taints to tolerate (requires Kubernetes >=1.6) | `[]`
|
||||||
|
`nodeExporter.resources` | node-exporter resource requests and limits (YAML) | `{}`
|
||||||
|
`nodeExporter.securityContext` | securityContext for containers in pod | `{}`
|
||||||
|
`nodeExporter.service.annotations` | annotations for node-exporter service | `{prometheus.io/scrape: "true"}`
|
||||||
|
`nodeExporter.service.clusterIP` | internal node-exporter cluster service IP | `None`
|
||||||
|
`nodeExporter.service.externalIPs` | node-exporter service external IP addresses | `[]`
|
||||||
|
`nodeExporter.service.loadBalancerIP` | IP address to assign to load balancer (if supported) | `""`
|
||||||
|
`nodeExporter.service.loadBalancerSourceRanges` | list of IP CIDRs allowed access to load balancer (if supported) | `[]`
|
||||||
|
`nodeExporter.service.servicePort` | node-exporter service port | `9100`
|
||||||
|
`nodeExporter.service.type` | type of node-exporter service to create | `ClusterIP`
|
||||||
|
`pushgateway.enabled` | If true, create pushgateway | `true`
|
||||||
|
`pushgateway.name` | pushgateway container name | `pushgateway`
|
||||||
|
`pushgateway.image.repository` | pushgateway container image repository | `prom/pushgateway`
|
||||||
|
`pushgateway.image.tag` | pushgateway container image tag | `v0.6.0`
|
||||||
|
`pushgateway.image.pullPolicy` | pushgateway container image pull policy | `IfNotPresent`
|
||||||
|
`pushgateway.extraArgs` | Additional pushgateway container arguments | `{}`
|
||||||
|
`pushgateway.ingress.enabled` | If true, pushgateway Ingress will be created | `false`
|
||||||
|
`pushgateway.ingress.annotations` | pushgateway Ingress annotations | `{}`
|
||||||
|
`pushgateway.ingress.hosts` | pushgateway Ingress hostnames | `[]`
|
||||||
|
`pushgateway.ingress.tls` | pushgateway Ingress TLS configuration (YAML) | `[]`
|
||||||
|
`pushgateway.nodeSelector` | node labels for pushgateway pod assignment | `{}`
|
||||||
|
`pushgateway.podAnnotations` | annotations to be added to pushgateway pods | `{}`
|
||||||
|
`pushgateway.tolerations` | node taints to tolerate (requires Kubernetes >=1.6) | `[]`
|
||||||
|
`pushgateway.replicaCount` | desired number of pushgateway pods | `1`
|
||||||
|
`pushgateway.resources` | pushgateway pod resource requests & limits | `{}`
|
||||||
|
`pushgateway.service.annotations` | annotations for pushgateway service | `{}`
|
||||||
|
`pushgateway.service.clusterIP` | internal pushgateway cluster service IP | `""`
|
||||||
|
`pushgateway.service.externalIPs` | pushgateway service external IP addresses | `[]`
|
||||||
|
`pushgateway.service.loadBalancerIP` | IP address to assign to load balancer (if supported) | `""`
|
||||||
|
`pushgateway.service.loadBalancerSourceRanges` | list of IP CIDRs allowed access to load balancer (if supported) | `[]`
|
||||||
|
`pushgateway.service.servicePort` | pushgateway service port | `9091`
|
||||||
|
`pushgateway.service.type` | type of pushgateway service to create | `ClusterIP`
|
||||||
|
`rbac.create` | If true, create & use RBAC resources | `true`
|
||||||
|
`server.name` | Prometheus server container name | `server`
|
||||||
|
`server.image.repository` | Prometheus server container image repository | `prom/prometheus`
|
||||||
|
`server.image.tag` | Prometheus server container image tag | `v2.4.3`
|
||||||
|
`server.image.pullPolicy` | Prometheus server container image pull policy | `IfNotPresent`
|
||||||
|
`server.extraArgs` | Additional Prometheus server container arguments | `{}`
|
||||||
|
`server.prefixURL` | The prefix slug at which the server can be accessed | ``
|
||||||
|
`server.baseURL` | The external url at which the server can be accessed | ``
|
||||||
|
`server.extraHostPathMounts` | Additional Prometheus server hostPath mounts | `[]`
|
||||||
|
`server.extraConfigmapMounts` | Additional Prometheus server configMap mounts | `[]`
|
||||||
|
`server.extraSecretMounts` | Additional Prometheus server Secret mounts | `[]`
|
||||||
|
`server.configMapOverrideName` | Prometheus server ConfigMap override where full-name is `{{.Release.Name}}-{{.Values.server.configMapOverrideName}}` and setting this value will prevent the default server ConfigMap from being generated | `""`
|
||||||
|
`server.ingress.enabled` | If true, Prometheus server Ingress will be created | `false`
|
||||||
|
`server.ingress.annotations` | Prometheus server Ingress annotations | `[]`
|
||||||
|
`server.ingress.hosts` | Prometheus server Ingress hostnames | `[]`
|
||||||
|
`server.ingress.tls` | Prometheus server Ingress TLS configuration (YAML) | `[]`
|
||||||
|
`server.nodeSelector` | node labels for Prometheus server pod assignment | `{}`
|
||||||
|
`server.tolerations` | node taints to tolerate (requires Kubernetes >=1.6) | `[]`
|
||||||
|
`server.persistentVolume.enabled` | If true, Prometheus server will create a Persistent Volume Claim | `true`
|
||||||
|
`server.persistentVolume.accessModes` | Prometheus server data Persistent Volume access modes | `[ReadWriteOnce]`
|
||||||
|
`server.persistentVolume.annotations` | Prometheus server data Persistent Volume annotations | `{}`
|
||||||
|
`server.persistentVolume.existingClaim` | Prometheus server data Persistent Volume existing claim name | `""`
|
||||||
|
`server.persistentVolume.mountPath` | Prometheus server data Persistent Volume mount root path | `/data`
|
||||||
|
`server.persistentVolume.size` | Prometheus server data Persistent Volume size | `8Gi`
|
||||||
|
`server.persistentVolume.storageClass` | Prometheus server data Persistent Volume Storage Class | `unset`
|
||||||
|
`server.persistentVolume.subPath` | Subdirectory of Prometheus server data Persistent Volume to mount | `""`
|
||||||
|
`server.podAnnotations` | annotations to be added to Prometheus server pods | `{}`
|
||||||
|
`server.replicaCount` | desired number of Prometheus server pods | `1`
|
||||||
|
`server.resources` | Prometheus server resource requests and limits | `{}`
|
||||||
|
`server.service.annotations` | annotations for Prometheus server service | `{}`
|
||||||
|
`server.service.clusterIP` | internal Prometheus server cluster service IP | `""`
|
||||||
|
`server.service.externalIPs` | Prometheus server service external IP addresses | `[]`
|
||||||
|
`server.service.loadBalancerIP` | IP address to assign to load balancer (if supported) | `""`
|
||||||
|
`server.service.loadBalancerSourceRanges` | list of IP CIDRs allowed access to load balancer (if supported) | `[]`
|
||||||
|
`server.service.nodePort` | Port to be used as the service NodePort (ignored if `server.service.type` is not `NodePort`) | `0`
|
||||||
|
`server.service.servicePort` | Prometheus server service port | `80`
|
||||||
|
`server.service.type` | type of Prometheus server service to create | `ClusterIP`
|
||||||
|
`serviceAccounts.alertmanager.create` | If true, create the alertmanager service account | `true`
|
||||||
|
`serviceAccounts.alertmanager.name` | name of the alertmanager service account to use or create | `{{ prometheus.alertmanager.fullname }}`
|
||||||
|
`serviceAccounts.kubeStateMetrics.create` | If true, create the kubeStateMetrics service account | `true`
|
||||||
|
`serviceAccounts.kubeStateMetrics.name` | name of the kubeStateMetrics service account to use or create | `{{ prometheus.kubeStateMetrics.fullname }}`
|
||||||
|
`serviceAccounts.nodeExporter.create` | If true, create the nodeExporter service account | `true`
|
||||||
|
`serviceAccounts.nodeExporter.name` | name of the nodeExporter service account to use or create | `{{ prometheus.nodeExporter.fullname }}`
|
||||||
|
`serviceAccounts.pushgateway.create` | If true, create the pushgateway service account | `true`
|
||||||
|
`serviceAccounts.pushgateway.name` | name of the pushgateway service account to use or create | `{{ prometheus.pushgateway.fullname }}`
|
||||||
|
`serviceAccounts.server.create` | If true, create the server service account | `true`
|
||||||
|
`serviceAccounts.server.name` | name of the server service account to use or create | `{{ prometheus.server.fullname }}`
|
||||||
|
`server.terminationGracePeriodSeconds` | Prometheus server Pod termination grace period | `300`
|
||||||
|
`server.retention` | (optional) Prometheus data retention | `""`
|
||||||
|
`serverFiles.alerts` | Prometheus server alerts configuration | `{}`
|
||||||
|
`serverFiles.rules` | Prometheus server rules configuration | `{}`
|
||||||
|
`serverFiles.prometheus.yml` | Prometheus server scrape configuration | example configuration
|
||||||
|
`networkPolicy.enabled` | Enable NetworkPolicy | `false` |
|
||||||
|
|
||||||
|
### RBAC Configuration
|
||||||
|
Roles and RoleBindings resources will be created automatically for `server` and `kubeStateMetrics` services.
|
||||||
|
|
||||||
|
To manually setup RBAC you need to set the parameter `rbac.create=false` and specify the service account to be used for each service by setting the parameters: `serviceAccounts.{{ component }}.create` to `false` and `serviceAccounts.{{ component }}.name` to the name of a pre-existing service account.
|
||||||
|
|
||||||
|
> **Tip**: You can refer to the default `*-clusterrole.yaml` and `*-clusterrolebinding.yaml` files in [templates](templates/) to customize your own.
|
||||||
|
|
||||||
|
### ConfigMap Files
|
||||||
|
AlertManager is configured through [alertmanager.yml](https://prometheus.io/docs/alerting/configuration/). This file (and any others listed in `alertmanagerFiles`) will be mounted into the `alertmanager` pod.
|
||||||
|
|
||||||
|
Prometheus is configured through [prometheus.yml](https://prometheus.io/docs/operating/configuration/). This file (and any others listed in `serverFiles`) will be mounted into the `server` pod.
|
||||||
|
|
||||||
|
### Ingress TLS
|
||||||
|
If your cluster allows automatic creation/retrieval of TLS certificates (e.g. [kube-lego](https://github.com/jetstack/kube-lego)), please refer to the documentation for that mechanism.
|
||||||
|
|
||||||
|
To manually configure TLS, first create/retrieve a key & certificate pair for the address(es) you wish to protect. Then create a TLS secret in the namespace:
|
||||||
|
|
||||||
|
```console
|
||||||
|
kubectl create secret tls prometheus-server-tls --cert=path/to/tls.cert --key=path/to/tls.key
|
||||||
|
```
|
||||||
|
|
||||||
|
Include the secret's name, along with the desired hostnames, in the alertmanager/server Ingress TLS section of your custom `values.yaml` file:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
server:
|
||||||
|
ingress:
|
||||||
|
## If true, Prometheus server Ingress will be created
|
||||||
|
##
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
## Prometheus server Ingress hostnames
|
||||||
|
## Must be provided if Ingress is enabled
|
||||||
|
##
|
||||||
|
hosts:
|
||||||
|
- prometheus.domain.com
|
||||||
|
|
||||||
|
## Prometheus server Ingress TLS configuration
|
||||||
|
## Secrets must be manually created in the namespace
|
||||||
|
##
|
||||||
|
tls:
|
||||||
|
- secretName: prometheus-server-tls
|
||||||
|
hosts:
|
||||||
|
- prometheus.domain.com
|
||||||
|
```
|
||||||
|
|
||||||
|
### NetworkPolicy
|
||||||
|
|
||||||
|
Enabling Network Policy for Prometheus will secure connections to Alert Manager
|
||||||
|
and Kube State Metrics by only accepting connections from Prometheus Server.
|
||||||
|
All inbound connections to Prometheus Server are still allowed.
|
||||||
|
|
||||||
|
To enable network policy for Prometheus, install a networking plugin that
|
||||||
|
implements the Kubernetes NetworkPolicy spec, and set `networkPolicy.enabled` to true.
|
||||||
|
|
||||||
|
If NetworkPolicy is enabled for Prometheus' scrape targets, you may also need
|
||||||
|
to manually create a networkpolicy which allows it.
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
# Buypass Prometheus
|
||||||
|
|
||||||
|
[Prometheus](https://prometheus.io/), a [Cloud Native Computing Foundation](https://cncf.io/) project, is a systems and service monitoring system. It collects metrics from configured targets at given intervals, evaluates rule expressions, displays the results, and can trigger alerts if some condition is observed to be true.
|
||||||
@ -0,0 +1,310 @@
|
|||||||
|
categories:
|
||||||
|
- Monitoring
|
||||||
|
questions:
|
||||||
|
# Security
|
||||||
|
- variable: podSecurityPolicy.enabled
|
||||||
|
default: true
|
||||||
|
description: "Enable Pod Securiy Policy"
|
||||||
|
type: boolean
|
||||||
|
group: "Security"
|
||||||
|
label: "Enable Pod Securiy Policy"
|
||||||
|
- variable: rbac.create
|
||||||
|
default: true
|
||||||
|
description: "Create RBAC rules"
|
||||||
|
type: boolean
|
||||||
|
group: "Security"
|
||||||
|
label: "Create RBAC rules"
|
||||||
|
- variable: networkPolicy.enabled
|
||||||
|
default: true
|
||||||
|
description: "Enable NetworkPolicy"
|
||||||
|
type: boolean
|
||||||
|
group: "Security"
|
||||||
|
label: "Enable NetworkPolicy"
|
||||||
|
# Docker image configurations
|
||||||
|
- variable: defaultImage
|
||||||
|
default: "true"
|
||||||
|
description: "Use default Docker image"
|
||||||
|
label: Use Default Image
|
||||||
|
type: boolean
|
||||||
|
show_subquestion_if: false
|
||||||
|
group: "Container Images"
|
||||||
|
subquestions:
|
||||||
|
- variable: server.image.repository
|
||||||
|
default: "prom/prometheus"
|
||||||
|
description: "Prometheus image name"
|
||||||
|
type: string
|
||||||
|
label: Prometheus Image Name
|
||||||
|
- variable: server.image.tag
|
||||||
|
default: "v2.21.0"
|
||||||
|
description: "Prometheus image tag"
|
||||||
|
type: string
|
||||||
|
label: Prometheus Image Tag
|
||||||
|
- variable: alertmanager.image.repository
|
||||||
|
default: "prom/alertmanager"
|
||||||
|
description: "Alertmanager image name"
|
||||||
|
type: string
|
||||||
|
label: Alertmanager Image Name
|
||||||
|
show_if: "alertmanager.enabled=true"
|
||||||
|
- variable: alertmanager.image.tag
|
||||||
|
default: "v0.21.0"
|
||||||
|
description: "Alertmanager image tag"
|
||||||
|
type: string
|
||||||
|
label: Alertmanager Image Tag
|
||||||
|
show_if: "alertmanager.enabled=true"
|
||||||
|
- variable: nodeExporter.image.repository
|
||||||
|
default: "prom/node-exporter"
|
||||||
|
description: "Node exporter image name"
|
||||||
|
type: string
|
||||||
|
label: NodeExporter Image Name
|
||||||
|
- variable: nodeExporter.image.tag
|
||||||
|
default: "v1.0.1"
|
||||||
|
description: "Node exporter image tag"
|
||||||
|
type: string
|
||||||
|
label: NodeExporter Image Tag
|
||||||
|
- variable: pushgateway.image.repository
|
||||||
|
default: "prom/pushgateway"
|
||||||
|
description: "Pushgateway image name"
|
||||||
|
type: string
|
||||||
|
label: Pushgateway Image Name
|
||||||
|
- variable: pushgateway.image.tag
|
||||||
|
default: "v1.2.0"
|
||||||
|
description: "Pushgateway image tag"
|
||||||
|
type: string
|
||||||
|
label: Pushgateway Image Tag
|
||||||
|
- variable: kubeStateMetrics.image.repository
|
||||||
|
default: "quay.io/coreos/kube-state-metrics"
|
||||||
|
description: "Kube-state-metrics image name"
|
||||||
|
type: string
|
||||||
|
label: KubeStateMetrics Image Name
|
||||||
|
- variable: kubeStateMetrics.image.tag
|
||||||
|
default: "v1.9.7"
|
||||||
|
description: "Kube-state-metrics image tag"
|
||||||
|
type: string
|
||||||
|
label: KubeStateMetrics Image Tag
|
||||||
|
- variable: grafana.image.repository
|
||||||
|
default: "grafana/grafana"
|
||||||
|
description: "Grafana image name"
|
||||||
|
type: string
|
||||||
|
label: Grafana Image Name
|
||||||
|
- variable: grafana.image.tag
|
||||||
|
default: "5.3.1"
|
||||||
|
description: "Grafana image tag"
|
||||||
|
type: string
|
||||||
|
label: Grafana Image Tag
|
||||||
|
- variable: grafana.grafanaWatcher.image.repository
|
||||||
|
default: "quay.io/coreos/grafana-watcher"
|
||||||
|
description: "Grafana Watcher image name"
|
||||||
|
type: string
|
||||||
|
label: Grafana Watcher Image Name
|
||||||
|
- variable: grafana.grafanaWatcher.image.tag
|
||||||
|
default: "v0.0.8"
|
||||||
|
description: "Grafana Watcher image tag"
|
||||||
|
type: string
|
||||||
|
label: Grafana Watcher Image Tag
|
||||||
|
# server configurations
|
||||||
|
- variable: server.ingress.enabled
|
||||||
|
default: true
|
||||||
|
description: "Expose prometheus using Layer 7 Load Balancer - ingress"
|
||||||
|
type: boolean
|
||||||
|
group: "Prometheus Server"
|
||||||
|
label: Expose Prometheus using Layer 7 Load Balancer
|
||||||
|
show_subquestion_if: true
|
||||||
|
required: true
|
||||||
|
subquestions:
|
||||||
|
- variable: server.ingress.hosts[0]
|
||||||
|
default: "xip.io"
|
||||||
|
description: "Prometheus server ingress hostname"
|
||||||
|
type: hostname
|
||||||
|
required: true
|
||||||
|
label: Hostname
|
||||||
|
- variable: server.service.type
|
||||||
|
default: "NodePort"
|
||||||
|
description: "Server service type"
|
||||||
|
group: "Prometheus Server"
|
||||||
|
type: enum
|
||||||
|
show_if: "server.ingress.enabled=false"
|
||||||
|
options:
|
||||||
|
- "ClusterIP"
|
||||||
|
- "NodePort"
|
||||||
|
- "LoadBalancer"
|
||||||
|
required: true
|
||||||
|
label: Prometheus Service Type
|
||||||
|
show_subquestion_if: "NodePort"
|
||||||
|
subquestions:
|
||||||
|
- variable: server.service.nodePort
|
||||||
|
default: ""
|
||||||
|
description: "NodePort http port(to set explicitly, choose port between 30000-32767)"
|
||||||
|
type: int
|
||||||
|
min: 30000
|
||||||
|
max: 32767
|
||||||
|
label: Prometheus NodePort Http Port
|
||||||
|
show_if: "server.ingress.enabled=false&&server.service.type=NodePort"
|
||||||
|
- variable: server.persistentVolume.enabled
|
||||||
|
default: "false"
|
||||||
|
description: "If true, prometheus will create a persistent volume claim"
|
||||||
|
type: boolean
|
||||||
|
group: "Prometheus Server"
|
||||||
|
required: true
|
||||||
|
label: Create Persistent Volume for Prometheus
|
||||||
|
show_subquestion_if: true
|
||||||
|
subquestions:
|
||||||
|
- variable: server.persistentVolume.size
|
||||||
|
default: "8Gi"
|
||||||
|
description: "Prometheus data persistent volume size"
|
||||||
|
type: string
|
||||||
|
label: Prometheus Persistent Volume Size
|
||||||
|
- variable: server.persistentVolume.storageClass
|
||||||
|
default: ""
|
||||||
|
description: "Prometheus data persistent volume storageClass, if not set use default StorageClass"
|
||||||
|
type: storageclass
|
||||||
|
label: Prometheus Persistent Volume StorageClass
|
||||||
|
# grafana configurations
|
||||||
|
- variable: grafana.enabled
|
||||||
|
default: true
|
||||||
|
description: "Create Grafana Dashboard"
|
||||||
|
type: boolean
|
||||||
|
group: "Grafana Settings"
|
||||||
|
label: Enable Grafana Dashboard
|
||||||
|
show_subquestion_if: "true"
|
||||||
|
subquestions:
|
||||||
|
- variable: grafana.adminUser
|
||||||
|
default: "admin"
|
||||||
|
description: "Grafana admin username"
|
||||||
|
type: string
|
||||||
|
group: "Grafana Settings"
|
||||||
|
label: Grafana Admin Username
|
||||||
|
required: true
|
||||||
|
- variable: grafana.adminPassword
|
||||||
|
default: ""
|
||||||
|
description: "Grafana admin password"
|
||||||
|
type: password
|
||||||
|
group: "Grafana Settings"
|
||||||
|
label: Grafana Admin Password
|
||||||
|
- variable: grafana.ingress.enabled
|
||||||
|
default: "true"
|
||||||
|
description: "Expose grafana using Layer 7 Load Balancer - ingress"
|
||||||
|
type: boolean
|
||||||
|
group: "Grafana Settings"
|
||||||
|
label: Expose Grafana using Layer 7 Load Balancer
|
||||||
|
show_if: "grafana.enabled=true"
|
||||||
|
required: true
|
||||||
|
show_subquestion_if: true
|
||||||
|
subquestions:
|
||||||
|
- variable: grafana.ingress.hosts[0]
|
||||||
|
default: "xip.io"
|
||||||
|
description: "Hostname to your grafana installation"
|
||||||
|
type: hostname
|
||||||
|
required: true
|
||||||
|
label: Hostname
|
||||||
|
show_if: "grafana.enabled=true"
|
||||||
|
- variable: grafana.service.type
|
||||||
|
default: "NodePort"
|
||||||
|
description: "Grafana service type"
|
||||||
|
type: enum
|
||||||
|
group: "Grafana Settings"
|
||||||
|
show_if: "grafana.enabled=true"
|
||||||
|
options:
|
||||||
|
- "ClusterIP"
|
||||||
|
- "NodePort"
|
||||||
|
required: true
|
||||||
|
label: Grafana Service Type
|
||||||
|
show_if: "grafana.enabled=true&&grafana.ingress.enabled=false"
|
||||||
|
show_subquestion_if: "NodePort"
|
||||||
|
subquestions:
|
||||||
|
- variable: grafana.service.nodePort
|
||||||
|
default: ""
|
||||||
|
description: "NodePort http port(to set explicitly, choose port between 30000-32767)"
|
||||||
|
type: int
|
||||||
|
min: 30000
|
||||||
|
max: 32767
|
||||||
|
label: Grafana NodePort Number
|
||||||
|
show_if: "grafana.enabled=true&&grafana.ingress.enabled=false"
|
||||||
|
- variable: grafana.persistence.enabled
|
||||||
|
default: "false"
|
||||||
|
description: "Enable persistent volume for Grafana"
|
||||||
|
type: boolean
|
||||||
|
required: true
|
||||||
|
label: Grafana Persistent Volume Enabled
|
||||||
|
show_if: "grafana.enabled=true"
|
||||||
|
show_subquestion_if: true
|
||||||
|
group: "Grafana Settings"
|
||||||
|
subquestions:
|
||||||
|
- variable: grafana.persistence.size
|
||||||
|
default: "8Gi"
|
||||||
|
description: "Grafana Persistent Volume Size"
|
||||||
|
type: string
|
||||||
|
label: Grafana Volume Size
|
||||||
|
required: true
|
||||||
|
- variable: grafana.persistence.storageClass
|
||||||
|
default: ""
|
||||||
|
description: "If undefined or set to null, using the default storageClass. Defaults to null."
|
||||||
|
type: storageclass
|
||||||
|
label: Storage Class for Grafana
|
||||||
|
# alertmanager configurations
|
||||||
|
- variable: alertmanager.enabled
|
||||||
|
default: "true"
|
||||||
|
description: "If true, create alertmanager"
|
||||||
|
type: boolean
|
||||||
|
group: "Alertmanager"
|
||||||
|
label: Enable Alertmanager
|
||||||
|
show_subquestion_if: true
|
||||||
|
- variable: alertmanager.ingress.enabled
|
||||||
|
default: "false"
|
||||||
|
description: "Expose alertmanager using Layer 7 Load Balancer - ingress"
|
||||||
|
type: boolean
|
||||||
|
group: "Alertmanager"
|
||||||
|
label: Expose Alertmanager using Layer 7 Load Balancer
|
||||||
|
show_if: "alertmanager.enabled=true"
|
||||||
|
show_subquestion_if: true
|
||||||
|
required: true
|
||||||
|
subquestions:
|
||||||
|
- variable: alertmanager.ingress.hosts[0]
|
||||||
|
default: "xip.io"
|
||||||
|
description: "Hostname to your alertmanager installation"
|
||||||
|
type: hostname
|
||||||
|
required: true
|
||||||
|
label: Hostname
|
||||||
|
show_if: "alertmanager.enabled=true"
|
||||||
|
- variable: alertmanager.service.type
|
||||||
|
default: "NodePort"
|
||||||
|
description: "Alertmanager service type"
|
||||||
|
type: enum
|
||||||
|
show_if: "alertmanager.ingress.enabled=false&&alertmanager.enabled=true"
|
||||||
|
group: "Alertmanager"
|
||||||
|
options:
|
||||||
|
- "ClusterIP"
|
||||||
|
- "NodePort"
|
||||||
|
required: true
|
||||||
|
label: Alertmanager Service Type
|
||||||
|
show_subquestion_if: "NodePort"
|
||||||
|
subquestions:
|
||||||
|
- variable: alertmanager.service.nodePort
|
||||||
|
default: ""
|
||||||
|
description: "NodePort http port(to set explicitly, choose port between 30000-32767)"
|
||||||
|
type: int
|
||||||
|
min: 30000
|
||||||
|
max: 32767
|
||||||
|
label: Alertmanager NodePort Http Port
|
||||||
|
show_if: "alertmanager.enabled=true&&alertmanager.ingress.enabled=false"
|
||||||
|
- variable: alertmanager.persistentVolume.enabled
|
||||||
|
default: "false"
|
||||||
|
description: "If true, alertmanager will create a persistent volume claim"
|
||||||
|
type: boolean
|
||||||
|
required: true
|
||||||
|
group: "Alertmanager"
|
||||||
|
label: Create Persistent Volume for Alertmanager
|
||||||
|
show_if: "alertmanager.enabled=true"
|
||||||
|
show_subquestion_if: true
|
||||||
|
subquestions:
|
||||||
|
- variable: alertmanager.persistentVolume.size
|
||||||
|
default: "2Gi"
|
||||||
|
description: "Alertmanager data persistent volume size"
|
||||||
|
type: string
|
||||||
|
label: Alertmanager Persistent Volume Size
|
||||||
|
show_if: "alertmanager.enabled=true"
|
||||||
|
- variable: alertmanager.persistentVolume.storageClass
|
||||||
|
default: ""
|
||||||
|
description: "Alertmanager data persistent volume storageClass, if not set use default StorageClass"
|
||||||
|
type: storageclass
|
||||||
|
label: Alertmanager Persistent Volume StorageClass
|
||||||
|
show_if: "alertmanager.enabled=true"
|
||||||
@ -0,0 +1,112 @@
|
|||||||
|
{{- if .Values.server.enabled -}}
|
||||||
|
The Prometheus server can be accessed via port {{ .Values.server.service.servicePort }} on the following DNS name from within your cluster:
|
||||||
|
{{ template "prometheus.server.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local
|
||||||
|
|
||||||
|
{{ if .Values.server.ingress.enabled -}}
|
||||||
|
From outside the cluster, the server URL(s) are:
|
||||||
|
{{- range .Values.server.ingress.hosts }}
|
||||||
|
http://{{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
Get the Prometheus server URL by running these commands in the same shell:
|
||||||
|
{{- if contains "NodePort" .Values.server.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "prometheus.server.fullname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.server.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch the status of by running 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "prometheus.server.fullname" . }}'
|
||||||
|
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "prometheus.server.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.server.service.servicePort }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.server.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "prometheus.name" . }},component={{ .Values.server.name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 9090
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Values.server.persistentVolume.enabled }}
|
||||||
|
{{- else }}
|
||||||
|
#################################################################################
|
||||||
|
###### WARNING: Persistence is disabled!!! You will lose your data when #####
|
||||||
|
###### the Server pod is terminated. #####
|
||||||
|
#################################################################################
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{ if .Values.alertmanager.enabled }}
|
||||||
|
The Prometheus alertmanager can be accessed via port {{ .Values.alertmanager.service.servicePort }} on the following DNS name from within your cluster:
|
||||||
|
{{ template "prometheus.alertmanager.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local
|
||||||
|
|
||||||
|
{{ if .Values.alertmanager.ingress.enabled -}}
|
||||||
|
From outside the cluster, the alertmanager URL(s) are:
|
||||||
|
{{- range .Values.alertmanager.ingress.hosts }}
|
||||||
|
http://{{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
Get the Alertmanager URL by running these commands in the same shell:
|
||||||
|
{{- if contains "NodePort" .Values.alertmanager.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "prometheus.alertmanager.fullname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.alertmanager.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch the status of by running 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "prometheus.alertmanager.fullname" . }}'
|
||||||
|
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "prometheus.alertmanager.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.alertmanager.service.servicePort }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.alertmanager.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "prometheus.name" . }},component={{ .Values.alertmanager.name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 9093
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Values.alertmanager.persistentVolume.enabled }}
|
||||||
|
{{- else }}
|
||||||
|
#################################################################################
|
||||||
|
###### WARNING: Persistence is disabled!!! You will lose your data when #####
|
||||||
|
###### the AlertManager pod is terminated. #####
|
||||||
|
#################################################################################
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Values.nodeExporter.podSecurityPolicy.enabled }}
|
||||||
|
{{- else }}
|
||||||
|
#################################################################################
|
||||||
|
###### WARNING: Pod Security Policy has been moved to a global property. #####
|
||||||
|
###### use .Values.podSecurityPolicy.enabled with pod-based #####
|
||||||
|
###### annotations #####
|
||||||
|
###### (e.g. .Values.nodeExporter.podSecurityPolicy.annotations) #####
|
||||||
|
#################################################################################
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{ if .Values.pushgateway.enabled }}
|
||||||
|
The Prometheus PushGateway can be accessed via port {{ .Values.pushgateway.service.servicePort }} on the following DNS name from within your cluster:
|
||||||
|
{{ template "prometheus.pushgateway.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local
|
||||||
|
|
||||||
|
{{ if .Values.pushgateway.ingress.enabled -}}
|
||||||
|
From outside the cluster, the pushgateway URL(s) are:
|
||||||
|
{{- range .Values.pushgateway.ingress.hosts }}
|
||||||
|
http://{{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
Get the PushGateway URL by running these commands in the same shell:
|
||||||
|
{{- if contains "NodePort" .Values.pushgateway.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "prometheus.pushgateway.fullname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.pushgateway.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch the status of by running 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "prometheus.pushgateway.fullname" . }}'
|
||||||
|
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "prometheus.pushgateway.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.pushgateway.service.servicePort }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.pushgateway.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "prometheus.name" . }},component={{ .Values.pushgateway.name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 9091
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
For more information on running Prometheus, visit:
|
||||||
|
https://prometheus.io/
|
||||||
@ -0,0 +1,298 @@
|
|||||||
|
{{/* vim: set filetype=mustache: */}}
|
||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create unified labels for prometheus components
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.common.matchLabels" -}}
|
||||||
|
app: {{ template "prometheus.name" . }}
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "prometheus.common.metaLabels" -}}
|
||||||
|
chart: {{ template "prometheus.chart" . }}
|
||||||
|
heritage: {{ .Release.Service }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "prometheus.alertmanager.labels" -}}
|
||||||
|
{{ include "prometheus.alertmanager.matchLabels" . }}
|
||||||
|
{{ include "prometheus.common.metaLabels" . }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "prometheus.alertmanager.matchLabels" -}}
|
||||||
|
component: {{ .Values.alertmanager.name | quote }}
|
||||||
|
{{ include "prometheus.common.matchLabels" . }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "prometheus.nodeExporter.labels" -}}
|
||||||
|
{{ include "prometheus.nodeExporter.matchLabels" . }}
|
||||||
|
{{ include "prometheus.common.metaLabels" . }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "prometheus.nodeExporter.matchLabels" -}}
|
||||||
|
component: {{ .Values.nodeExporter.name | quote }}
|
||||||
|
{{ include "prometheus.common.matchLabels" . }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "prometheus.pushgateway.labels" -}}
|
||||||
|
{{ include "prometheus.pushgateway.matchLabels" . }}
|
||||||
|
{{ include "prometheus.common.metaLabels" . }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "prometheus.pushgateway.matchLabels" -}}
|
||||||
|
component: {{ .Values.pushgateway.name | quote }}
|
||||||
|
{{ include "prometheus.common.matchLabels" . }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "prometheus.kubeStateMetrics.labels" -}}
|
||||||
|
{{ include "prometheus.kubeStateMetrics.matchLabels" . }}
|
||||||
|
{{ include "prometheus.common.metaLabels" . }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "prometheus.kubeStateMetrics.matchLabels" -}}
|
||||||
|
component: {{ .Values.kubeStateMetrics.name | quote }}
|
||||||
|
{{ include "prometheus.common.matchLabels" . }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "prometheus.server.labels" -}}
|
||||||
|
{{ include "prometheus.server.matchLabels" . }}
|
||||||
|
{{ include "prometheus.common.metaLabels" . }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "prometheus.server.matchLabels" -}}
|
||||||
|
component: {{ .Values.server.name | quote }}
|
||||||
|
{{ include "prometheus.common.matchLabels" . }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride -}}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||||
|
{{- if contains $name .Release.Name -}}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a fully qualified alertmanager name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- define "prometheus.alertmanager.fullname" -}}
|
||||||
|
{{- if .Values.alertmanager.fullnameOverride -}}
|
||||||
|
{{- .Values.alertmanager.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||||
|
{{- if contains $name .Release.Name -}}
|
||||||
|
{{- printf "%s-%s" .Release.Name .Values.alertmanager.name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- printf "%s-%s-%s" .Release.Name $name .Values.alertmanager.name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a fully qualified node-exporter name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.nodeExporter.fullname" -}}
|
||||||
|
{{- if .Values.nodeExporter.fullnameOverride -}}
|
||||||
|
{{- .Values.nodeExporter.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||||
|
{{- if contains $name .Release.Name -}}
|
||||||
|
{{- printf "%s-%s" .Release.Name .Values.nodeExporter.name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- printf "%s-%s-%s" .Release.Name $name .Values.nodeExporter.name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a fully qualified Prometheus server name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.server.fullname" -}}
|
||||||
|
{{- if .Values.server.fullnameOverride -}}
|
||||||
|
{{- .Values.server.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||||
|
{{- if contains $name .Release.Name -}}
|
||||||
|
{{- printf "%s-%s" .Release.Name .Values.server.name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- printf "%s-%s-%s" .Release.Name $name .Values.server.name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a fully qualified pushgateway name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.pushgateway.fullname" -}}
|
||||||
|
{{- if .Values.pushgateway.fullnameOverride -}}
|
||||||
|
{{- .Values.pushgateway.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||||
|
{{- if contains $name .Release.Name -}}
|
||||||
|
{{- printf "%s-%s" .Release.Name .Values.pushgateway.name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- printf "%s-%s-%s" .Release.Name $name .Values.pushgateway.name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a fully qualified kubeStateMetrics name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.kubeStateMetrics.fullname" -}}
|
||||||
|
{{- if .Values.kubeStateMetrics.fullnameOverride -}}
|
||||||
|
{{- .Values.kubeStateMetrics.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||||
|
{{- if contains $name .Release.Name -}}
|
||||||
|
{{- printf "%s-%s" .Release.Name .Values.kubeStateMetrics.name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- printf "%s-%s-%s" .Release.Name $name .Values.kubeStateMetrics.name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Return the appropriate apiVersion for deployment.
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.deployment.apiVersion" -}}
|
||||||
|
{{- if semverCompare "<1.9-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
{{- print "extensions/v1beta1" -}}
|
||||||
|
{{- else if semverCompare "^1.9-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
{{- print "apps/v1" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{/*
|
||||||
|
Return the appropriate apiVersion for daemonset.
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.daemonset.apiVersion" -}}
|
||||||
|
{{- if semverCompare "<1.9-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
{{- print "extensions/v1beta1" -}}
|
||||||
|
{{- else if semverCompare "^1.9-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
{{- print "apps/v1" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{/*
|
||||||
|
Return the appropriate apiVersion for networkpolicy.
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.networkPolicy.apiVersion" -}}
|
||||||
|
{{- if semverCompare ">=1.4-0, <1.7-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
{{- print "extensions/v1beta1" -}}
|
||||||
|
{{- else if semverCompare "^1.7-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
{{- print "networking.k8s.io/v1" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{/*
|
||||||
|
Return the appropriate apiVersion for podsecuritypolicy.
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.podSecurityPolicy.apiVersion" -}}
|
||||||
|
{{- if semverCompare ">=1.3-0, <1.10-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
{{- print "extensions/v1beta1" -}}
|
||||||
|
{{- else if semverCompare "^1.10-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
{{- print "policy/v1beta1" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{/*
|
||||||
|
Return the appropriate apiVersion for rbac.
|
||||||
|
*/}}
|
||||||
|
{{- define "rbac.apiVersion" -}}
|
||||||
|
{{- if .Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1" }}
|
||||||
|
{{- print "rbac.authorization.k8s.io/v1" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- print "rbac.authorization.k8s.io/v1beta1" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use for the alertmanager component
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.serviceAccountName.alertmanager" -}}
|
||||||
|
{{- if .Values.serviceAccounts.alertmanager.create -}}
|
||||||
|
{{ default (include "prometheus.alertmanager.fullname" .) .Values.serviceAccounts.alertmanager.name }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ default "default" .Values.serviceAccounts.alertmanager.name }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use for the nodeExporter component
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.serviceAccountName.nodeExporter" -}}
|
||||||
|
{{- if .Values.serviceAccounts.nodeExporter.create -}}
|
||||||
|
{{ default (include "prometheus.nodeExporter.fullname" .) .Values.serviceAccounts.nodeExporter.name }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ default "default" .Values.serviceAccounts.nodeExporter.name }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use for the pushgateway component
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.serviceAccountName.pushgateway" -}}
|
||||||
|
{{- if .Values.serviceAccounts.pushgateway.create -}}
|
||||||
|
{{ default (include "prometheus.pushgateway.fullname" .) .Values.serviceAccounts.pushgateway.name }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ default "default" .Values.serviceAccounts.pushgateway.name }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use for the kubeStateMetrics component
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.serviceAccountName.kubeStateMetrics" -}}
|
||||||
|
{{- if .Values.serviceAccounts.kubeStateMetrics.create -}}
|
||||||
|
{{ default (include "prometheus.kubeStateMetrics.fullname" .) .Values.serviceAccounts.kubeStateMetrics.name }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ default "default" .Values.serviceAccounts.kubeStateMetrics.name }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use for the server component
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.serviceAccountName.server" -}}
|
||||||
|
{{- if .Values.serviceAccounts.server.create -}}
|
||||||
|
{{ default (include "prometheus.server.fullname" .) .Values.serviceAccounts.server.name }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ default "default" .Values.serviceAccounts.server.name }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Define the prometheus.namespace template if set with forceNamespace or .Release.Namespace is set
|
||||||
|
*/}}
|
||||||
|
{{- define "prometheus.namespace" -}}
|
||||||
|
{{- if .Values.forceNamespace -}}
|
||||||
|
{{ printf "namespace: %s" .Values.forceNamespace }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ printf "namespace: %s" .Release.Namespace }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
{{- if and .Values.alertmanager.enabled .Values.rbac.create .Values.alertmanager.useClusterRole (not .Values.alertmanager.useExistingRole) -}}
|
||||||
|
apiVersion: {{ template "rbac.apiVersion" . }}
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.alertmanager.fullname" . }}
|
||||||
|
rules:
|
||||||
|
{{- if .Values.podSecurityPolicy.enabled }}
|
||||||
|
- apiGroups:
|
||||||
|
- extensions
|
||||||
|
resources:
|
||||||
|
- podsecuritypolicies
|
||||||
|
verbs:
|
||||||
|
- use
|
||||||
|
resourceNames:
|
||||||
|
- {{ template "prometheus.alertmanager.fullname" . }}
|
||||||
|
{{- else }}
|
||||||
|
[]
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
{{- if and .Values.alertmanager.enabled .Values.rbac.create .Values.alertmanager.useClusterRole -}}
|
||||||
|
apiVersion: {{ template "rbac.apiVersion" . }}
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.alertmanager.fullname" . }}
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: {{ template "prometheus.serviceAccountName.alertmanager" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 4 }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
{{- if (not .Values.alertmanager.useExistingRole) }}
|
||||||
|
name: {{ template "prometheus.alertmanager.fullname" . }}
|
||||||
|
{{- else }}
|
||||||
|
name: {{ .Values.alertmanager.useExistingRole }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
{{- if and .Values.alertmanager.enabled (and (empty .Values.alertmanager.configMapOverrideName) (empty .Values.alertmanager.configFromSecret)) -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.alertmanager.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
data:
|
||||||
|
{{- $root := . -}}
|
||||||
|
{{- range $key, $value := .Values.alertmanagerFiles }}
|
||||||
|
{{- if $key | regexMatch ".*\\.ya?ml$" }}
|
||||||
|
{{ $key }}: |
|
||||||
|
{{ toYaml $value | default "{}" | indent 4 }}
|
||||||
|
{{- else }}
|
||||||
|
{{ $key }}: {{ toYaml $value | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,149 @@
|
|||||||
|
{{- if and .Values.alertmanager.enabled (not .Values.alertmanager.statefulSet.enabled) -}}
|
||||||
|
apiVersion: {{ template "prometheus.deployment.apiVersion" . }}
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.alertmanager.deploymentAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.alertmanager.deploymentAnnotations | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.alertmanager.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.alertmanager.matchLabels" . | nindent 6 }}
|
||||||
|
replicas: {{ .Values.alertmanager.replicaCount }}
|
||||||
|
{{- if .Values.alertmanager.strategy }}
|
||||||
|
strategy:
|
||||||
|
{{ toYaml .Values.alertmanager.strategy | trim | indent 4 }}
|
||||||
|
{{ if eq .Values.alertmanager.strategy.type "Recreate" }}rollingUpdate: null{{ end }}
|
||||||
|
{{- end }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.alertmanager.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.alertmanager.podAnnotations | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" . | nindent 8 }}
|
||||||
|
{{- if .Values.alertmanager.podLabels}}
|
||||||
|
{{ toYaml .Values.alertmanager.podLabels | nindent 8 }}
|
||||||
|
{{- end}}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.alertmanager.schedulerName }}
|
||||||
|
schedulerName: "{{ .Values.alertmanager.schedulerName }}"
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ template "prometheus.serviceAccountName.alertmanager" . }}
|
||||||
|
{{- if .Values.alertmanager.extraInitContainers }}
|
||||||
|
initContainers:
|
||||||
|
{{ toYaml .Values.alertmanager.extraInitContainers | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.priorityClassName }}
|
||||||
|
priorityClassName: "{{ .Values.alertmanager.priorityClassName }}"
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
- name: {{ template "prometheus.name" . }}-{{ .Values.alertmanager.name }}
|
||||||
|
image: "{{ .Values.alertmanager.image.repository }}:{{ .Values.alertmanager.image.tag }}"
|
||||||
|
imagePullPolicy: "{{ .Values.alertmanager.image.pullPolicy }}"
|
||||||
|
env:
|
||||||
|
{{- range $key, $value := .Values.alertmanager.extraEnv }}
|
||||||
|
- name: {{ $key }}
|
||||||
|
value: {{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
- name: POD_IP
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
apiVersion: v1
|
||||||
|
fieldPath: status.podIP
|
||||||
|
args:
|
||||||
|
- --config.file=/etc/config/{{ .Values.alertmanager.configFileName }}
|
||||||
|
- --storage.path={{ .Values.alertmanager.persistentVolume.mountPath }}
|
||||||
|
- --cluster.advertise-address=$(POD_IP):6783
|
||||||
|
{{- range $key, $value := .Values.alertmanager.extraArgs }}
|
||||||
|
- --{{ $key }}={{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.baseURL }}
|
||||||
|
- --web.external-url={{ .Values.alertmanager.baseURL }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
ports:
|
||||||
|
- containerPort: 9093
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: {{ .Values.alertmanager.prefixURL }}/-/ready
|
||||||
|
port: 9093
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
timeoutSeconds: 30
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.alertmanager.resources | indent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: config-volume
|
||||||
|
mountPath: /etc/config
|
||||||
|
- name: storage-volume
|
||||||
|
mountPath: "{{ .Values.alertmanager.persistentVolume.mountPath }}"
|
||||||
|
subPath: "{{ .Values.alertmanager.persistentVolume.subPath }}"
|
||||||
|
{{- range .Values.alertmanager.extraSecretMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
mountPath: {{ .mountPath }}
|
||||||
|
subPath: {{ .subPath }}
|
||||||
|
readOnly: {{ .readOnly }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Values.configmapReload.alertmanager.enabled }}
|
||||||
|
- name: {{ template "prometheus.name" . }}-{{ .Values.alertmanager.name }}-{{ .Values.configmapReload.alertmanager.name }}
|
||||||
|
image: "{{ .Values.configmapReload.alertmanager.image.repository }}:{{ .Values.configmapReload.alertmanager.image.tag }}"
|
||||||
|
imagePullPolicy: "{{ .Values.configmapReload.alertmanager.image.pullPolicy }}"
|
||||||
|
args:
|
||||||
|
- --volume-dir=/etc/config
|
||||||
|
- --webhook-url=http://127.0.0.1:9093{{ .Values.alertmanager.prefixURL }}/-/reload
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.configmapReload.alertmanager.resources | indent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: config-volume
|
||||||
|
mountPath: /etc/config
|
||||||
|
readOnly: true
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{ toYaml .Values.imagePullSecrets | indent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{ toYaml .Values.alertmanager.nodeSelector | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.securityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{ toYaml .Values.alertmanager.securityContext | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{ toYaml .Values.alertmanager.tolerations | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{ toYaml .Values.alertmanager.affinity | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
volumes:
|
||||||
|
- name: config-volume
|
||||||
|
{{- if empty .Values.alertmanager.configFromSecret }}
|
||||||
|
configMap:
|
||||||
|
name: {{ if .Values.alertmanager.configMapOverrideName }}{{ .Release.Name }}-{{ .Values.alertmanager.configMapOverrideName }}{{- else }}{{ template "prometheus.alertmanager.fullname" . }}{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
secret:
|
||||||
|
secretName: {{ .Values.alertmanager.configFromSecret }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.alertmanager.extraSecretMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
secret:
|
||||||
|
secretName: {{ .secretName }}
|
||||||
|
{{- end }}
|
||||||
|
- name: storage-volume
|
||||||
|
{{- if .Values.alertmanager.persistentVolume.enabled }}
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ if .Values.alertmanager.persistentVolume.existingClaim }}{{ .Values.alertmanager.persistentVolume.existingClaim }}{{- else }}{{ template "prometheus.alertmanager.fullname" . }}{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
emptyDir: {}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,31 @@
|
|||||||
|
{{- if and .Values.alertmanager.enabled .Values.alertmanager.statefulSet.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.alertmanager.statefulSet.headless.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.alertmanager.statefulSet.headless.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" . | nindent 4 }}
|
||||||
|
{{- if .Values.alertmanager.statefulSet.headless.labels }}
|
||||||
|
{{ toYaml .Values.alertmanager.statefulSet.headless.labels | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ template "prometheus.alertmanager.fullname" . }}-headless
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
clusterIP: None
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: {{ .Values.alertmanager.statefulSet.headless.servicePort }}
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9093
|
||||||
|
{{- if .Values.alertmanager.statefulSet.headless.enableMeshPeer }}
|
||||||
|
- name: meshpeer
|
||||||
|
port: 6783
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 6783
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
{{- include "prometheus.alertmanager.matchLabels" . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
{{- if and .Values.alertmanager.enabled .Values.alertmanager.ingress.enabled -}}
|
||||||
|
{{- $releaseName := .Release.Name -}}
|
||||||
|
{{- $serviceName := include "prometheus.alertmanager.fullname" . }}
|
||||||
|
{{- $servicePort := .Values.alertmanager.service.servicePort -}}
|
||||||
|
{{- $extraPaths := .Values.alertmanager.ingress.extraPaths -}}
|
||||||
|
{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }}
|
||||||
|
apiVersion: networking.k8s.io/v1beta1
|
||||||
|
{{ else }}
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
{{ end -}}
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.alertmanager.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.alertmanager.ingress.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" . | nindent 4 }}
|
||||||
|
{{- range $key, $value := .Values.alertmanager.ingress.extraLabels }}
|
||||||
|
{{ $key }}: {{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ template "prometheus.alertmanager.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
{{- range .Values.alertmanager.ingress.hosts }}
|
||||||
|
{{- $url := splitList "/" . }}
|
||||||
|
- host: {{ first $url }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
{{ if $extraPaths }}
|
||||||
|
{{ toYaml $extraPaths | indent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
- path: /{{ rest $url | join "/" }}
|
||||||
|
backend:
|
||||||
|
serviceName: {{ $serviceName }}
|
||||||
|
servicePort: {{ $servicePort }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if .Values.alertmanager.ingress.tls }}
|
||||||
|
tls:
|
||||||
|
{{ toYaml .Values.alertmanager.ingress.tls | indent 4 }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
{{- if and .Values.alertmanager.enabled .Values.networkPolicy.enabled -}}
|
||||||
|
apiVersion: {{ template "prometheus.networkPolicy.apiVersion" . }}
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
name: {{ template "prometheus.alertmanager.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
podSelector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.alertmanager.matchLabels" . | nindent 6 }}
|
||||||
|
ingress:
|
||||||
|
- from:
|
||||||
|
- podSelector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.server.matchLabels" . | nindent 12 }}
|
||||||
|
- ports:
|
||||||
|
- port: 9093
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
{{- if .Values.alertmanager.podDisruptionBudget.enabled }}
|
||||||
|
apiVersion: policy/v1beta1
|
||||||
|
kind: PodDisruptionBudget
|
||||||
|
metadata:
|
||||||
|
name: {{ template "prometheus.alertmanager.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
maxUnavailable: {{ .Values.alertmanager.podDisruptionBudget.maxUnavailable }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
{{- if .Values.rbac.create }}
|
||||||
|
{{- if .Values.podSecurityPolicy.enabled }}
|
||||||
|
apiVersion: {{ template "prometheus.podSecurityPolicy.apiVersion" . }}
|
||||||
|
kind: PodSecurityPolicy
|
||||||
|
metadata:
|
||||||
|
name: {{ template "prometheus.alertmanager.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" . | nindent 4 }}
|
||||||
|
annotations:
|
||||||
|
{{- if .Values.alertmanager.podSecurityPolicy.annotations }}
|
||||||
|
{{ toYaml .Values.alertmanager.podSecurityPolicy.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
privileged: false
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
requiredDropCapabilities:
|
||||||
|
- ALL
|
||||||
|
volumes:
|
||||||
|
- 'configMap'
|
||||||
|
- 'persistentVolumeClaim'
|
||||||
|
- 'emptyDir'
|
||||||
|
- 'secret'
|
||||||
|
allowedHostPaths:
|
||||||
|
- pathPrefix: /etc
|
||||||
|
readOnly: true
|
||||||
|
- pathPrefix: {{ .Values.alertmanager.persistentVolume.mountPath }}
|
||||||
|
hostNetwork: false
|
||||||
|
hostPID: false
|
||||||
|
hostIPC: false
|
||||||
|
runAsUser:
|
||||||
|
rule: 'RunAsAny'
|
||||||
|
seLinux:
|
||||||
|
rule: 'RunAsAny'
|
||||||
|
supplementalGroups:
|
||||||
|
rule: 'MustRunAs'
|
||||||
|
ranges:
|
||||||
|
# Forbid adding the root group.
|
||||||
|
- min: 1
|
||||||
|
max: 65535
|
||||||
|
fsGroup:
|
||||||
|
rule: 'MustRunAs'
|
||||||
|
ranges:
|
||||||
|
# Forbid adding the root group.
|
||||||
|
- min: 1
|
||||||
|
max: 65535
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
{{- if not .Values.alertmanager.statefulSet.enabled -}}
|
||||||
|
{{- if and .Values.alertmanager.enabled .Values.alertmanager.persistentVolume.enabled -}}
|
||||||
|
{{- if not .Values.alertmanager.persistentVolume.existingClaim -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.alertmanager.persistentVolume.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.alertmanager.persistentVolume.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.alertmanager.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
{{ toYaml .Values.alertmanager.persistentVolume.accessModes | indent 4 }}
|
||||||
|
{{- if .Values.alertmanager.persistentVolume.storageClass }}
|
||||||
|
{{- if (eq "-" .Values.alertmanager.persistentVolume.storageClass) }}
|
||||||
|
storageClassName: ""
|
||||||
|
{{- else }}
|
||||||
|
storageClassName: "{{ .Values.alertmanager.persistentVolume.storageClass }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.persistentVolume.volumeBindingMode }}
|
||||||
|
volumeBindingModeName: "{{ .Values.alertmanager.persistentVolume.volumeBindingMode }}"
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: "{{ .Values.alertmanager.persistentVolume.size }}"
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
{{- if and .Values.alertmanager.enabled .Values.rbac.create (eq .Values.alertmanager.useClusterRole false) (not .Values.alertmanager.useExistingRole) -}}
|
||||||
|
{{- range $.Values.alertmanager.namespaces }}
|
||||||
|
apiVersion: {{ template "rbac.apiVersion" . }}
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" $ | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.alertmanager.fullname" $ }}
|
||||||
|
namespace: {{ . }}
|
||||||
|
rules:
|
||||||
|
{{- if $.Values.podSecurityPolicy.enabled }}
|
||||||
|
- apiGroups:
|
||||||
|
- extensions
|
||||||
|
resources:
|
||||||
|
- podsecuritypolicies
|
||||||
|
verbs:
|
||||||
|
- use
|
||||||
|
resourceNames:
|
||||||
|
- {{ template "prometheus.alertmanager.fullname" $ }}
|
||||||
|
{{- else }}
|
||||||
|
[]
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
{{- if and .Values.alertmanager.enabled .Values.rbac.create (eq .Values.alertmanager.useClusterRole false) -}}
|
||||||
|
{{ range $.Values.alertmanager.namespaces }}
|
||||||
|
apiVersion: {{ template "rbac.apiVersion" . }}
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" $ | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.alertmanager.fullname" $ }}
|
||||||
|
namespace: {{ . }}
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: {{ template "prometheus.serviceAccountName.alertmanager" $ }}
|
||||||
|
{{ include "prometheus.namespace" $ | indent 4 }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
{{- if (not $.Values.alertmanager.useExistingRole) }}
|
||||||
|
name: {{ template "prometheus.alertmanager.fullname" $ }}
|
||||||
|
{{- else }}
|
||||||
|
name: {{ $.Values.alertmanager.useExistingRole }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{ end }}
|
||||||
@ -0,0 +1,53 @@
|
|||||||
|
{{- if .Values.alertmanager.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.alertmanager.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.alertmanager.service.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" . | nindent 4 }}
|
||||||
|
{{- if .Values.alertmanager.service.labels }}
|
||||||
|
{{ toYaml .Values.alertmanager.service.labels | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ template "prometheus.alertmanager.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.alertmanager.service.clusterIP }}
|
||||||
|
clusterIP: {{ .Values.alertmanager.service.clusterIP }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.service.externalIPs }}
|
||||||
|
externalIPs:
|
||||||
|
{{ toYaml .Values.alertmanager.service.externalIPs | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.service.loadBalancerIP }}
|
||||||
|
loadBalancerIP: {{ .Values.alertmanager.service.loadBalancerIP }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.service.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{- range $cidr := .Values.alertmanager.service.loadBalancerSourceRanges }}
|
||||||
|
- {{ $cidr }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: {{ .Values.alertmanager.service.servicePort }}
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9093
|
||||||
|
{{- if .Values.alertmanager.service.nodePort }}
|
||||||
|
nodePort: {{ .Values.alertmanager.service.nodePort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.service.enableMeshPeer }}
|
||||||
|
- name: meshpeer
|
||||||
|
port: 6783
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 6783
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
{{- include "prometheus.alertmanager.matchLabels" . | nindent 4 }}
|
||||||
|
{{- if .Values.alertmanager.service.sessionAffinity }}
|
||||||
|
sessionAffinity: {{ .Values.alertmanager.service.sessionAffinity }}
|
||||||
|
{{- end }}
|
||||||
|
type: "{{ .Values.alertmanager.service.type }}"
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
{{- if and .Values.alertmanager.enabled .Values.serviceAccounts.alertmanager.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.serviceAccountName.alertmanager" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.serviceAccounts.alertmanager.annotations | indent 4 }}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,173 @@
|
|||||||
|
{{- if and .Values.alertmanager.enabled .Values.alertmanager.statefulSet.enabled -}}
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.alertmanager.statefulSet.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.alertmanager.statefulSet.annotations | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" . | nindent 4 }}
|
||||||
|
{{- if .Values.alertmanager.statefulSet.labels}}
|
||||||
|
{{ toYaml .Values.alertmanager.statefulSet.labels | nindent 4 }}
|
||||||
|
{{- end}}
|
||||||
|
name: {{ template "prometheus.alertmanager.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
serviceName: {{ template "prometheus.alertmanager.fullname" . }}-headless
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.alertmanager.matchLabels" . | nindent 6 }}
|
||||||
|
replicas: {{ .Values.alertmanager.replicaCount }}
|
||||||
|
podManagementPolicy: {{ .Values.alertmanager.statefulSet.podManagementPolicy }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.alertmanager.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.alertmanager.podAnnotations | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.alertmanager.labels" . | nindent 8 }}
|
||||||
|
{{- if .Values.alertmanager.podLabels}}
|
||||||
|
{{ toYaml .Values.alertmanager.podLabels | nindent 8 }}
|
||||||
|
{{- end}}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.alertmanager.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{ toYaml .Values.alertmanager.affinity | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.schedulerName }}
|
||||||
|
schedulerName: "{{ .Values.alertmanager.schedulerName }}"
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ template "prometheus.serviceAccountName.alertmanager" . }}
|
||||||
|
{{- if .Values.alertmanager.priorityClassName }}
|
||||||
|
priorityClassName: "{{ .Values.alertmanager.priorityClassName }}"
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
- name: {{ template "prometheus.name" . }}-{{ .Values.alertmanager.name }}
|
||||||
|
image: "{{ .Values.alertmanager.image.repository }}:{{ .Values.alertmanager.image.tag }}"
|
||||||
|
imagePullPolicy: "{{ .Values.alertmanager.image.pullPolicy }}"
|
||||||
|
env:
|
||||||
|
{{- range $key, $value := .Values.alertmanager.extraEnv }}
|
||||||
|
- name: {{ $key }}
|
||||||
|
value: {{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
- name: POD_IP
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
apiVersion: v1
|
||||||
|
fieldPath: status.podIP
|
||||||
|
args:
|
||||||
|
- --config.file=/etc/config/alertmanager.yml
|
||||||
|
- --storage.path={{ .Values.alertmanager.persistentVolume.mountPath }}
|
||||||
|
{{- if .Values.alertmanager.statefulSet.headless.enableMeshPeer }}
|
||||||
|
- --cluster.advertise-address=$(POD_IP):6783
|
||||||
|
- --cluster.listen-address=0.0.0.0:6783
|
||||||
|
{{- range $n := until (.Values.alertmanager.replicaCount | int) }}
|
||||||
|
- --cluster.peer={{ template "prometheus.alertmanager.fullname" $ }}-{{ $n }}.{{ template "prometheus.alertmanager.fullname" $ }}-headless:6783
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
- --cluster.listen-address=
|
||||||
|
{{- end }}
|
||||||
|
{{- range $key, $value := .Values.alertmanager.extraArgs }}
|
||||||
|
- --{{ $key }}={{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.baseURL }}
|
||||||
|
- --web.external-url={{ .Values.alertmanager.baseURL }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
ports:
|
||||||
|
- containerPort: 9093
|
||||||
|
{{- if .Values.alertmanager.statefulSet.headless.enableMeshPeer }}
|
||||||
|
- containerPort: 6783
|
||||||
|
{{- end }}
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: {{ .Values.alertmanager.prefixURL }}/#/status
|
||||||
|
port: 9093
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
timeoutSeconds: 30
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.alertmanager.resources | indent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: config-volume
|
||||||
|
mountPath: /etc/config
|
||||||
|
- name: storage-volume
|
||||||
|
mountPath: "{{ .Values.alertmanager.persistentVolume.mountPath }}"
|
||||||
|
subPath: "{{ .Values.alertmanager.persistentVolume.subPath }}"
|
||||||
|
{{- range .Values.alertmanager.extraSecretMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
mountPath: {{ .mountPath }}
|
||||||
|
subPath: {{ .subPath }}
|
||||||
|
readOnly: {{ .readOnly }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.configmapReload.alertmanager.enabled }}
|
||||||
|
- name: {{ template "prometheus.name" . }}-{{ .Values.alertmanager.name }}-{{ .Values.configmapReload.alertmanager.name }}
|
||||||
|
image: "{{ .Values.configmapReload.alertmanager.image.repository }}:{{ .Values.configmapReload.alertmanager.image.tag }}"
|
||||||
|
imagePullPolicy: "{{ .Values.configmapReload.alertmanager.image.pullPolicy }}"
|
||||||
|
args:
|
||||||
|
- --volume-dir=/etc/config
|
||||||
|
- --webhook-url=http://localhost:9093{{ .Values.alertmanager.prefixURL }}/-/reload
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.configmapReload.alertmanager.resources | indent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: config-volume
|
||||||
|
mountPath: /etc/config
|
||||||
|
readOnly: true
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{ toYaml .Values.imagePullSecrets | indent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{ toYaml .Values.alertmanager.nodeSelector | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.securityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{ toYaml .Values.alertmanager.securityContext | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{ toYaml .Values.alertmanager.tolerations | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
volumes:
|
||||||
|
- name: config-volume
|
||||||
|
{{- if empty .Values.alertmanager.configFromSecret }}
|
||||||
|
configMap:
|
||||||
|
name: {{ if .Values.alertmanager.configMapOverrideName }}{{ .Release.Name }}-{{ .Values.alertmanager.configMapOverrideName }}{{- else }}{{ template "prometheus.alertmanager.fullname" . }}{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
secret:
|
||||||
|
secretName: {{ .Values.alertmanager.configFromSecret }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.alertmanager.extraSecretMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
secret:
|
||||||
|
secretName: {{ .secretName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.alertmanager.persistentVolume.enabled }}
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- metadata:
|
||||||
|
name: storage-volume
|
||||||
|
{{- if .Values.alertmanager.persistentVolume.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.alertmanager.persistentVolume.annotations | indent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
{{ toYaml .Values.alertmanager.persistentVolume.accessModes | indent 10 }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: "{{ .Values.alertmanager.persistentVolume.size }}"
|
||||||
|
{{- if .Values.server.persistentVolume.storageClass }}
|
||||||
|
{{- if (eq "-" .Values.server.persistentVolume.storageClass) }}
|
||||||
|
storageClassName: ""
|
||||||
|
{{- else }}
|
||||||
|
storageClassName: "{{ .Values.alertmanager.persistentVolume.storageClass }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
- name: storage-volume
|
||||||
|
emptyDir: {}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,177 @@
|
|||||||
|
{{- if and .Values.kubeStateMetrics.enabled .Values.rbac.create -}}
|
||||||
|
apiVersion: {{ template "rbac.apiVersion" . }}
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.kubeStateMetrics.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.kubeStateMetrics.fullname" . }}
|
||||||
|
rules:
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.certificatesigningrequests }}
|
||||||
|
- apiGroups: ["certificates.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- certificatesigningrequests
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.configmaps }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- configmaps
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.cronjobs }}
|
||||||
|
- apiGroups: ["batch"]
|
||||||
|
resources:
|
||||||
|
- cronjobs
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.daemonsets }}
|
||||||
|
- apiGroups: ["extensions", "apps"]
|
||||||
|
resources:
|
||||||
|
- daemonsets
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.deployments }}
|
||||||
|
- apiGroups: ["extensions", "apps"]
|
||||||
|
resources:
|
||||||
|
- deployments
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.endpoints }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- endpoints
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.horizontalpodautoscalers }}
|
||||||
|
- apiGroups: ["autoscaling"]
|
||||||
|
resources:
|
||||||
|
- horizontalpodautoscalers
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.ingresses }}
|
||||||
|
- apiGroups: ["extensions", "networking.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- ingresses
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.jobs }}
|
||||||
|
- apiGroups: ["batch"]
|
||||||
|
resources:
|
||||||
|
- jobs
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.limitranges }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- limitranges
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.mutatingwebhookconfigurations }}
|
||||||
|
- apiGroups: ["admissionregistration.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- mutatingwebhookconfigurations
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.namespaces }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- namespaces
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.networkpolicies }}
|
||||||
|
- apiGroups: ["networking.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- networkpolicies
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.nodes }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- nodes
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.persistentvolumeclaims }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- persistentvolumeclaims
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.persistentvolumes }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- persistentvolumes
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.poddisruptionbudgets }}
|
||||||
|
- apiGroups: ["policy"]
|
||||||
|
resources:
|
||||||
|
- poddisruptionbudgets
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.pods }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.replicasets }}
|
||||||
|
- apiGroups: ["extensions", "apps"]
|
||||||
|
resources:
|
||||||
|
- replicasets
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.replicationcontrollers }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- replicationcontrollers
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.resourcequotas }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- resourcequotas
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.secrets }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- secrets
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.services }}
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources:
|
||||||
|
- services
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.statefulsets }}
|
||||||
|
- apiGroups: ["apps"]
|
||||||
|
resources:
|
||||||
|
- statefulsets
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.storageclasses }}
|
||||||
|
- apiGroups: ["storage.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- storageclasses
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.validatingwebhookconfigurations }}
|
||||||
|
- apiGroups: ["admissionregistration.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- validatingwebhookconfigurations
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.volumeattachments }}
|
||||||
|
- apiGroups: ["storage.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- volumeattachments
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{ if .Values.kubeStateMetrics.collectors.verticalpodautoscalers }}
|
||||||
|
- apiGroups: ["autoscaling.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- verticalpodautoscalers
|
||||||
|
verbs: ["list", "watch"]
|
||||||
|
{{ end -}}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
{{- if and .Values.kubeStateMetrics.enabled .Values.rbac.create -}}
|
||||||
|
apiVersion: {{ template "rbac.apiVersion" . }}
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.kubeStateMetrics.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.kubeStateMetrics.fullname" . }}
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: {{ template "prometheus.serviceAccountName.kubeStateMetrics" . }}
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: {{ template "prometheus.kubeStateMetrics.fullname" . }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,64 @@
|
|||||||
|
{{- if .Values.kubeStateMetrics.enabled -}}
|
||||||
|
apiVersion: {{ template "prometheus.deployment.apiVersion" . }}
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.kubeStateMetrics.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.kubeStateMetrics.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.kubeStateMetrics.matchLabels" . | nindent 6 }}
|
||||||
|
replicas: {{ .Values.kubeStateMetrics.replicaCount }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.kubeStateMetrics.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.kubeStateMetrics.podAnnotations | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.kubeStateMetrics.labels" . | nindent 8 }}
|
||||||
|
{{- if .Values.kubeStateMetrics.podLabels}}
|
||||||
|
{{ toYaml .Values.kubeStateMetrics.podLabels | nindent 8 }}
|
||||||
|
{{- end}}
|
||||||
|
spec:
|
||||||
|
hostNetwork: {{ .Values.kubeStateMetrics.hostNetwork }}
|
||||||
|
serviceAccountName: {{ template "prometheus.serviceAccountName.kubeStateMetrics" . }}
|
||||||
|
{{- if .Values.kubeStateMetrics.securityContext.enabled }}
|
||||||
|
securityContext:
|
||||||
|
fsGroup: {{ .Values.kubeStateMetrics.securityContext.fsGroup }}
|
||||||
|
runAsGroup: {{ .Values.kubeStateMetrics.securityContext.runAsGroup }}
|
||||||
|
runAsUser: {{ .Values.kubeStateMetrics.securityContext.runAsUser }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.kubeStateMetrics.priorityClassName }}
|
||||||
|
priorityClassName: {{ .Values.kubeStateMetrics.priorityClassName }}
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
- name: {{ template "prometheus.name" . }}-{{ .Values.kubeStateMetrics.name }}
|
||||||
|
image: "{{ .Values.kubeStateMetrics.image.repository }}:{{ .Values.kubeStateMetrics.image.tag }}"
|
||||||
|
imagePullPolicy: "{{ .Values.kubeStateMetrics.image.pullPolicy }}"
|
||||||
|
{{- if .Values.kubeStateMetrics.args }}
|
||||||
|
args:
|
||||||
|
{{- range $key, $value := .Values.kubeStateMetrics.args }}
|
||||||
|
- --{{ $key }}={{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: metrics
|
||||||
|
containerPort: 8080
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.kubeStateMetrics.resources | indent 12 }}
|
||||||
|
{{- if .Values.kubeStateMetrics.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{ toYaml .Values.kubeStateMetrics.nodeSelector | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.kubeStateMetrics.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{ toYaml .Values.kubeStateMetrics.tolerations | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.kubeStateMetrics.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{ toYaml .Values.kubeStateMetrics.affinity | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
{{- if .Values.networkPolicy.enabled }}
|
||||||
|
apiVersion: {{ template "prometheus.networkPolicy.apiVersion" . }}
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
name: {{ template "prometheus.kubeStateMetrics.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.kubeStateMetrics.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
podSelector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.kubeStateMetrics.matchLabels" . | nindent 6 }}
|
||||||
|
ingress:
|
||||||
|
- from:
|
||||||
|
- podSelector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.server.matchLabels" . | nindent 12 }}
|
||||||
|
- ports:
|
||||||
|
- port: 8080
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
{{- if and .Values.kubeStateMetrics.enabled .Values.rbac.create -}}
|
||||||
|
{{- if .Values.podSecurityPolicy.enabled }}
|
||||||
|
apiVersion: {{ template "rbac.apiVersion" . }}
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.kubeStateMetrics.labels" . | nindent 4 }}
|
||||||
|
name: psp-{{ template "prometheus.kubeStateMetrics.fullname" . }}
|
||||||
|
rules:
|
||||||
|
- apiGroups: ['extensions']
|
||||||
|
resources: ['podsecuritypolicies']
|
||||||
|
verbs: ['use']
|
||||||
|
resourceNames:
|
||||||
|
- {{ template "prometheus.kubeStateMetrics.fullname" . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
{{- if and .Values.kubeStateMetrics.enabled .Values.rbac.create -}}
|
||||||
|
{{- if .Values.podSecurityPolicy.enabled }}
|
||||||
|
apiVersion: {{ template "rbac.apiVersion" . }}
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.kubeStateMetrics.labels" . | nindent 4 }}
|
||||||
|
name: psp-{{ template "prometheus.kubeStateMetrics.fullname" . }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: psp-{{ template "prometheus.kubeStateMetrics.fullname" . }}
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: {{ template "prometheus.serviceAccountName.kubeStateMetrics" . }}
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,41 @@
|
|||||||
|
{{- if and .Values.kubeStateMetrics.enabled .Values.rbac.create }}
|
||||||
|
{{- if .Values.podSecurityPolicy.enabled }}
|
||||||
|
apiVersion: {{ template "prometheus.podSecurityPolicy.apiVersion" . }}
|
||||||
|
kind: PodSecurityPolicy
|
||||||
|
metadata:
|
||||||
|
name: {{ template "prometheus.kubeStateMetrics.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.kubeStateMetrics.labels" . | nindent 4 }}
|
||||||
|
annotations:
|
||||||
|
{{- if .Values.kubeStateMetrics.podSecurityPolicy.annotations }}
|
||||||
|
{{ toYaml .Values.kubeStateMetrics.podSecurityPolicy.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
privileged: false
|
||||||
|
volumes:
|
||||||
|
- 'secret'
|
||||||
|
{{- if .Values.kubeStateMetrics.podSecurityPolicy.additionalVolumes }}
|
||||||
|
{{ toYaml .Values.kubeStateMetrics.podSecurityPolicy.additionalVolumes | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
hostNetwork: false
|
||||||
|
hostIPC: false
|
||||||
|
hostPID: false
|
||||||
|
runAsUser:
|
||||||
|
rule: 'MustRunAsNonRoot'
|
||||||
|
seLinux:
|
||||||
|
rule: 'RunAsAny'
|
||||||
|
supplementalGroups:
|
||||||
|
rule: 'MustRunAs'
|
||||||
|
ranges:
|
||||||
|
# Forbid adding the root group.
|
||||||
|
- min: 1
|
||||||
|
max: 65535
|
||||||
|
fsGroup:
|
||||||
|
rule: 'MustRunAs'
|
||||||
|
ranges:
|
||||||
|
# Forbid adding the root group.
|
||||||
|
- min: 1
|
||||||
|
max: 65535
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
{{- if and .Values.kubeStateMetrics.enabled .Values.serviceAccounts.kubeStateMetrics.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.kubeStateMetrics.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.serviceAccountName.kubeStateMetrics" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.serviceAccounts.alertmanager.annotations | indent 4 }}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
{{- if .Values.kubeStateMetrics.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.kubeStateMetrics.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.kubeStateMetrics.service.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.kubeStateMetrics.labels" . | nindent 4 }}
|
||||||
|
{{- if .Values.kubeStateMetrics.service.labels }}
|
||||||
|
{{ toYaml .Values.kubeStateMetrics.service.labels | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ template "prometheus.kubeStateMetrics.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.kubeStateMetrics.service.clusterIP }}
|
||||||
|
clusterIP: {{ .Values.kubeStateMetrics.service.clusterIP }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.kubeStateMetrics.service.externalIPs }}
|
||||||
|
externalIPs:
|
||||||
|
{{ toYaml .Values.kubeStateMetrics.service.externalIPs | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.kubeStateMetrics.service.loadBalancerIP }}
|
||||||
|
loadBalancerIP: {{ .Values.kubeStateMetrics.service.loadBalancerIP }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.kubeStateMetrics.service.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{- range $cidr := .Values.kubeStateMetrics.service.loadBalancerSourceRanges }}
|
||||||
|
- {{ $cidr }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: {{ .Values.kubeStateMetrics.service.port }}
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 8080
|
||||||
|
selector:
|
||||||
|
app: {{ template "prometheus.name" . }}
|
||||||
|
component: "{{ .Values.kubeStateMetrics.name }}"
|
||||||
|
release: {{ .Release.Name }}
|
||||||
|
type: "{{ .Values.kubeStateMetrics.service.type }}"
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,128 @@
|
|||||||
|
{{- if .Values.nodeExporter.enabled -}}
|
||||||
|
apiVersion: {{ template "prometheus.daemonset.apiVersion" . }}
|
||||||
|
kind: DaemonSet
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.nodeExporter.deploymentAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.nodeExporter.deploymentAnnotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.nodeExporter.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.nodeExporter.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.nodeExporter.matchLabels" . | nindent 6 }}
|
||||||
|
{{- if .Values.nodeExporter.updateStrategy }}
|
||||||
|
updateStrategy:
|
||||||
|
{{ toYaml .Values.nodeExporter.updateStrategy | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.nodeExporter.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.nodeExporter.podAnnotations | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.nodeExporter.labels" . | nindent 8 }}
|
||||||
|
{{- if .Values.nodeExporter.pod.labels }}
|
||||||
|
{{ toYaml .Values.nodeExporter.pod.labels | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: {{ template "prometheus.serviceAccountName.nodeExporter" . }}
|
||||||
|
{{- if .Values.nodeExporter.extraInitContainers }}
|
||||||
|
initContainers:
|
||||||
|
{{ toYaml .Values.nodeExporter.extraInitContainers | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeExporter.priorityClassName }}
|
||||||
|
priorityClassName: "{{ .Values.nodeExporter.priorityClassName }}"
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
- name: {{ template "prometheus.name" . }}-{{ .Values.nodeExporter.name }}
|
||||||
|
image: "{{ .Values.nodeExporter.image.repository }}:{{ .Values.nodeExporter.image.tag }}"
|
||||||
|
imagePullPolicy: "{{ .Values.nodeExporter.image.pullPolicy }}"
|
||||||
|
args:
|
||||||
|
- --path.procfs=/host/proc
|
||||||
|
- --path.sysfs=/host/sys
|
||||||
|
{{- if .Values.nodeExporter.hostNetwork }}
|
||||||
|
- --web.listen-address=:{{ .Values.nodeExporter.service.hostPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range $key, $value := .Values.nodeExporter.extraArgs }}
|
||||||
|
{{- if $value }}
|
||||||
|
- --{{ $key }}={{ $value }}
|
||||||
|
{{- else }}
|
||||||
|
- --{{ $key }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: metrics
|
||||||
|
{{- if .Values.nodeExporter.hostNetwork }}
|
||||||
|
containerPort: {{ .Values.nodeExporter.service.hostPort }}
|
||||||
|
{{- else }}
|
||||||
|
containerPort: 9100
|
||||||
|
{{- end }}
|
||||||
|
hostPort: {{ .Values.nodeExporter.service.hostPort }}
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.nodeExporter.resources | indent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: proc
|
||||||
|
mountPath: /host/proc
|
||||||
|
readOnly: true
|
||||||
|
- name: sys
|
||||||
|
mountPath: /host/sys
|
||||||
|
readOnly: true
|
||||||
|
{{- range .Values.nodeExporter.extraHostPathMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
mountPath: {{ .mountPath }}
|
||||||
|
readOnly: {{ .readOnly }}
|
||||||
|
{{- if .mountPropagation }}
|
||||||
|
mountPropagation: {{ .mountPropagation }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.nodeExporter.extraConfigmapMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
mountPath: {{ .mountPath }}
|
||||||
|
readOnly: {{ .readOnly }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{ toYaml .Values.imagePullSecrets | indent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeExporter.hostNetwork }}
|
||||||
|
hostNetwork: true
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeExporter.hostPID }}
|
||||||
|
hostPID: true
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeExporter.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{ toYaml .Values.nodeExporter.tolerations | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeExporter.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{ toYaml .Values.nodeExporter.nodeSelector | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeExporter.securityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{ toYaml .Values.nodeExporter.securityContext | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
volumes:
|
||||||
|
- name: proc
|
||||||
|
hostPath:
|
||||||
|
path: /proc
|
||||||
|
- name: sys
|
||||||
|
hostPath:
|
||||||
|
path: /sys
|
||||||
|
{{- range .Values.nodeExporter.extraHostPathMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
hostPath:
|
||||||
|
path: {{ .hostPath }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.nodeExporter.extraConfigmapMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
configMap:
|
||||||
|
name: {{ .configMap }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
{{- if and .Values.nodeExporter.enabled .Values.rbac.create }}
|
||||||
|
{{- if .Values.podSecurityPolicy.enabled }}
|
||||||
|
apiVersion: {{ template "prometheus.podSecurityPolicy.apiVersion" . }}
|
||||||
|
kind: PodSecurityPolicy
|
||||||
|
metadata:
|
||||||
|
name: {{ template "prometheus.nodeExporter.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.nodeExporter.labels" . | nindent 4 }}
|
||||||
|
annotations:
|
||||||
|
{{- if .Values.nodeExporter.podSecurityPolicy.annotations }}
|
||||||
|
{{ toYaml .Values.nodeExporter.podSecurityPolicy.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
privileged: false
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
requiredDropCapabilities:
|
||||||
|
- ALL
|
||||||
|
volumes:
|
||||||
|
- 'configMap'
|
||||||
|
- 'hostPath'
|
||||||
|
- 'secret'
|
||||||
|
allowedHostPaths:
|
||||||
|
- pathPrefix: /proc
|
||||||
|
readOnly: true
|
||||||
|
- pathPrefix: /sys
|
||||||
|
readOnly: true
|
||||||
|
{{- range .Values.nodeExporter.extraHostPathMounts }}
|
||||||
|
- pathPrefix: {{ .hostPath }}
|
||||||
|
readOnly: {{ .readOnly }}
|
||||||
|
{{- end }}
|
||||||
|
hostNetwork: {{ .Values.nodeExporter.hostNetwork }}
|
||||||
|
hostPID: {{ .Values.nodeExporter.hostPID }}
|
||||||
|
hostIPC: false
|
||||||
|
runAsUser:
|
||||||
|
rule: 'RunAsAny'
|
||||||
|
seLinux:
|
||||||
|
rule: 'RunAsAny'
|
||||||
|
supplementalGroups:
|
||||||
|
rule: 'MustRunAs'
|
||||||
|
ranges:
|
||||||
|
# Forbid adding the root group.
|
||||||
|
- min: 1
|
||||||
|
max: 65535
|
||||||
|
fsGroup:
|
||||||
|
rule: 'MustRunAs'
|
||||||
|
ranges:
|
||||||
|
# Forbid adding the root group.
|
||||||
|
- min: 1
|
||||||
|
max: 65535
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
hostPorts:
|
||||||
|
- min: 1
|
||||||
|
max: 65535
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
{{- if and .Values.nodeExporter.enabled .Values.rbac.create }}
|
||||||
|
{{- if or (default .Values.nodeExporter.podSecurityPolicy.enabled false) (.Values.podSecurityPolicy.enabled) }}
|
||||||
|
apiVersion: {{ template "rbac.apiVersion" . }}
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
name: {{ template "prometheus.nodeExporter.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.nodeExporter.labels" . | nindent 4 }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
rules:
|
||||||
|
- apiGroups: ['extensions']
|
||||||
|
resources: ['podsecuritypolicies']
|
||||||
|
verbs: ['use']
|
||||||
|
resourceNames:
|
||||||
|
- {{ template "prometheus.nodeExporter.fullname" . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
{{- if and .Values.nodeExporter.enabled .Values.rbac.create }}
|
||||||
|
{{- if .Values.podSecurityPolicy.enabled }}
|
||||||
|
apiVersion: {{ template "rbac.apiVersion" . }}
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
name: {{ template "prometheus.nodeExporter.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.nodeExporter.labels" . | nindent 4 }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
roleRef:
|
||||||
|
kind: Role
|
||||||
|
name: {{ template "prometheus.nodeExporter.fullname" . }}
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: {{ template "prometheus.serviceAccountName.nodeExporter" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
{{- if and .Values.nodeExporter.enabled .Values.serviceAccounts.nodeExporter.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.nodeExporter.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.serviceAccountName.nodeExporter" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.serviceAccounts.nodeExporter.annotations | indent 4 }}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
{{- if .Values.nodeExporter.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.nodeExporter.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.nodeExporter.service.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.nodeExporter.labels" . | nindent 4 }}
|
||||||
|
{{- if .Values.nodeExporter.service.labels }}
|
||||||
|
{{ toYaml .Values.nodeExporter.service.labels | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ template "prometheus.nodeExporter.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.nodeExporter.service.clusterIP }}
|
||||||
|
clusterIP: {{ .Values.nodeExporter.service.clusterIP }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeExporter.service.externalIPs }}
|
||||||
|
externalIPs:
|
||||||
|
{{ toYaml .Values.nodeExporter.service.externalIPs | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeExporter.service.loadBalancerIP }}
|
||||||
|
loadBalancerIP: {{ .Values.nodeExporter.service.loadBalancerIP }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeExporter.service.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{- range $cidr := .Values.nodeExporter.service.loadBalancerSourceRanges }}
|
||||||
|
- {{ $cidr }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: metrics
|
||||||
|
{{- if .Values.nodeExporter.hostNetwork }}
|
||||||
|
port: {{ .Values.nodeExporter.service.hostPort }}
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: {{ .Values.nodeExporter.service.hostPort }}
|
||||||
|
{{- else }}
|
||||||
|
port: {{ .Values.nodeExporter.service.servicePort }}
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9100
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
{{- include "prometheus.nodeExporter.matchLabels" . | nindent 4 }}
|
||||||
|
type: "{{ .Values.nodeExporter.service.type }}"
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
{{- if and .Values.server.enabled .Values.rbac.create (empty .Values.server.useExistingClusterRoleName) -}}
|
||||||
|
apiVersion: {{ template "rbac.apiVersion" . }}
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.server.fullname" . }}
|
||||||
|
rules:
|
||||||
|
{{- if .Values.podSecurityPolicy.enabled }}
|
||||||
|
- apiGroups:
|
||||||
|
- extensions
|
||||||
|
resources:
|
||||||
|
- podsecuritypolicies
|
||||||
|
verbs:
|
||||||
|
- use
|
||||||
|
resourceNames:
|
||||||
|
- {{ template "prometheus.server.fullname" . }}
|
||||||
|
{{- end }}
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- nodes
|
||||||
|
- nodes/proxy
|
||||||
|
- nodes/metrics
|
||||||
|
- services
|
||||||
|
- endpoints
|
||||||
|
- pods
|
||||||
|
- ingresses
|
||||||
|
- configmaps
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- "extensions"
|
||||||
|
- "networking.k8s.io"
|
||||||
|
resources:
|
||||||
|
- ingresses/status
|
||||||
|
- ingresses
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- nonResourceURLs:
|
||||||
|
- "/metrics"
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
{{- if and .Values.server.enabled .Values.rbac.create (empty .Values.server.namespaces) (empty .Values.server.useExistingClusterRoleName) -}}
|
||||||
|
apiVersion: {{ template "rbac.apiVersion" . }}
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.server.fullname" . }}
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: {{ template "prometheus.serviceAccountName.server" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 4 }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: {{ template "prometheus.server.fullname" . }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,82 @@
|
|||||||
|
{{- if .Values.server.enabled -}}
|
||||||
|
{{- if (empty .Values.server.configMapOverrideName) -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.server.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
data:
|
||||||
|
{{- $root := . -}}
|
||||||
|
{{- range $key, $value := .Values.serverFiles }}
|
||||||
|
{{ $key }}: |
|
||||||
|
{{- if eq $key "prometheus.yml" }}
|
||||||
|
global:
|
||||||
|
{{ $root.Values.server.global | toYaml | trimSuffix "\n" | indent 6 }}
|
||||||
|
{{- if $root.Values.server.remoteWrite }}
|
||||||
|
remote_write:
|
||||||
|
{{ $root.Values.server.remoteWrite | toYaml | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if $root.Values.server.remoteRead }}
|
||||||
|
remote_read:
|
||||||
|
{{ $root.Values.server.remoteRead | toYaml | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if eq $key "alerts" }}
|
||||||
|
{{- if and (not (empty $value)) (empty $value.groups) }}
|
||||||
|
groups:
|
||||||
|
{{- range $ruleKey, $ruleValue := $value }}
|
||||||
|
- name: {{ $ruleKey -}}.rules
|
||||||
|
rules:
|
||||||
|
{{ $ruleValue | toYaml | trimSuffix "\n" | indent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{ toYaml $value | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{ toYaml $value | default "{}" | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if eq $key "prometheus.yml" -}}
|
||||||
|
{{- if $root.Values.extraScrapeConfigs }}
|
||||||
|
{{ tpl $root.Values.extraScrapeConfigs $root | indent 4 }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if or ($root.Values.alertmanager.enabled) ($root.Values.server.alertmanagers) }}
|
||||||
|
alerting:
|
||||||
|
{{- if $root.Values.alertRelabelConfigs }}
|
||||||
|
{{ $root.Values.alertRelabelConfigs | toYaml | trimSuffix "\n" | indent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
alertmanagers:
|
||||||
|
{{- if $root.Values.server.alertmanagers }}
|
||||||
|
{{ toYaml $root.Values.server.alertmanagers | indent 8 }}
|
||||||
|
{{- else }}
|
||||||
|
- kubernetes_sd_configs:
|
||||||
|
- role: pod
|
||||||
|
tls_config:
|
||||||
|
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
|
||||||
|
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
|
||||||
|
{{- if $root.Values.alertmanager.prefixURL }}
|
||||||
|
path_prefix: {{ $root.Values.alertmanager.prefixURL }}
|
||||||
|
{{- end }}
|
||||||
|
relabel_configs:
|
||||||
|
- source_labels: [__meta_kubernetes_namespace]
|
||||||
|
regex: {{ $root.Release.Namespace }}
|
||||||
|
action: keep
|
||||||
|
- source_labels: [__meta_kubernetes_pod_label_app]
|
||||||
|
regex: {{ template "prometheus.name" $root }}
|
||||||
|
action: keep
|
||||||
|
- source_labels: [__meta_kubernetes_pod_label_component]
|
||||||
|
regex: alertmanager
|
||||||
|
action: keep
|
||||||
|
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_probe]
|
||||||
|
regex: {{ index $root.Values.alertmanager.podAnnotations "prometheus.io/probe" | default ".*" }}
|
||||||
|
action: keep
|
||||||
|
- source_labels: [__meta_kubernetes_pod_container_port_number]
|
||||||
|
regex:
|
||||||
|
action: drop
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,222 @@
|
|||||||
|
{{- if .Values.server.enabled -}}
|
||||||
|
{{- if not .Values.server.statefulSet.enabled -}}
|
||||||
|
apiVersion: {{ template "prometheus.deployment.apiVersion" . }}
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.server.deploymentAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.server.deploymentAnnotations | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.server.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.server.matchLabels" . | nindent 6 }}
|
||||||
|
replicas: {{ .Values.server.replicaCount }}
|
||||||
|
{{- if .Values.server.strategy }}
|
||||||
|
strategy:
|
||||||
|
{{ toYaml .Values.server.strategy | trim | indent 4 }}
|
||||||
|
{{ if eq .Values.server.strategy.type "Recreate" }}rollingUpdate: null{{ end }}
|
||||||
|
{{- end }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.server.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.server.podAnnotations | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 8 }}
|
||||||
|
{{- if .Values.server.podLabels}}
|
||||||
|
{{ toYaml .Values.server.podLabels | nindent 8 }}
|
||||||
|
{{- end}}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.server.priorityClassName }}
|
||||||
|
priorityClassName: "{{ .Values.server.priorityClassName }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.schedulerName }}
|
||||||
|
schedulerName: "{{ .Values.server.schedulerName }}"
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ template "prometheus.serviceAccountName.server" . }}
|
||||||
|
{{- if .Values.server.extraInitContainers }}
|
||||||
|
initContainers:
|
||||||
|
{{ toYaml .Values.server.extraInitContainers | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
{{- if .Values.configmapReload.prometheus.enabled }}
|
||||||
|
- name: {{ template "prometheus.name" . }}-{{ .Values.server.name }}-{{ .Values.configmapReload.prometheus.name }}
|
||||||
|
image: "{{ .Values.configmapReload.prometheus.image.repository }}:{{ .Values.configmapReload.prometheus.image.tag }}"
|
||||||
|
imagePullPolicy: "{{ .Values.configmapReload.prometheus.image.pullPolicy }}"
|
||||||
|
args:
|
||||||
|
- --volume-dir=/etc/config
|
||||||
|
- --webhook-url=http://127.0.0.1:9090{{ .Values.server.prefixURL }}/-/reload
|
||||||
|
{{- range $key, $value := .Values.configmapReload.prometheus.extraArgs }}
|
||||||
|
- --{{ $key }}={{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.configmapReload.prometheus.extraVolumeDirs }}
|
||||||
|
- --volume-dir={{ . }}
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.configmapReload.prometheus.resources | indent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: config-volume
|
||||||
|
mountPath: /etc/config
|
||||||
|
readOnly: true
|
||||||
|
{{- range .Values.configmapReload.prometheus.extraConfigmapMounts }}
|
||||||
|
- name: {{ $.Values.configmapReload.prometheus.name }}-{{ .name }}
|
||||||
|
mountPath: {{ .mountPath }}
|
||||||
|
subPath: {{ .subPath }}
|
||||||
|
readOnly: {{ .readOnly }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
- name: {{ template "prometheus.name" . }}-{{ .Values.server.name }}
|
||||||
|
image: "{{ .Values.server.image.repository }}:{{ .Values.server.image.tag }}"
|
||||||
|
imagePullPolicy: "{{ .Values.server.image.pullPolicy }}"
|
||||||
|
{{- if .Values.server.env }}
|
||||||
|
env:
|
||||||
|
{{ toYaml .Values.server.env | indent 12}}
|
||||||
|
{{- end }}
|
||||||
|
args:
|
||||||
|
{{- if .Values.server.retention }}
|
||||||
|
- --storage.tsdb.retention.time={{ .Values.server.retention }}
|
||||||
|
{{- end }}
|
||||||
|
- --config.file={{ .Values.server.configPath }}
|
||||||
|
- --storage.tsdb.path={{ .Values.server.persistentVolume.mountPath }}
|
||||||
|
- --web.console.libraries=/etc/prometheus/console_libraries
|
||||||
|
- --web.console.templates=/etc/prometheus/consoles
|
||||||
|
{{- range .Values.server.extraFlags }}
|
||||||
|
- --{{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.baseURL }}
|
||||||
|
- --web.external-url={{ .Values.server.baseURL }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- range $key, $value := .Values.server.extraArgs }}
|
||||||
|
- --{{ $key }}={{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- containerPort: 9090
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: {{ .Values.server.prefixURL }}/-/ready
|
||||||
|
port: 9090
|
||||||
|
initialDelaySeconds: {{ .Values.server.readinessProbeInitialDelay }}
|
||||||
|
periodSeconds: {{ .Values.server.readinessProbePeriodSeconds }}
|
||||||
|
timeoutSeconds: {{ .Values.server.readinessProbeTimeout }}
|
||||||
|
failureThreshold: {{ .Values.server.readinessProbeFailureThreshold }}
|
||||||
|
successThreshold: {{ .Values.server.readinessProbeSuccessThreshold }}
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: {{ .Values.server.prefixURL }}/-/healthy
|
||||||
|
port: 9090
|
||||||
|
initialDelaySeconds: {{ .Values.server.livenessProbeInitialDelay }}
|
||||||
|
periodSeconds: {{ .Values.server.livenessProbePeriodSeconds }}
|
||||||
|
timeoutSeconds: {{ .Values.server.livenessProbeTimeout }}
|
||||||
|
failureThreshold: {{ .Values.server.livenessProbeFailureThreshold }}
|
||||||
|
successThreshold: {{ .Values.server.livenessProbeSuccessThreshold }}
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.server.resources | indent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: config-volume
|
||||||
|
mountPath: /etc/config
|
||||||
|
- name: storage-volume
|
||||||
|
mountPath: {{ .Values.server.persistentVolume.mountPath }}
|
||||||
|
subPath: "{{ .Values.server.persistentVolume.subPath }}"
|
||||||
|
{{- range .Values.server.extraHostPathMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
mountPath: {{ .mountPath }}
|
||||||
|
subPath: {{ .subPath }}
|
||||||
|
readOnly: {{ .readOnly }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.server.extraConfigmapMounts }}
|
||||||
|
- name: {{ $.Values.server.name }}-{{ .name }}
|
||||||
|
mountPath: {{ .mountPath }}
|
||||||
|
subPath: {{ .subPath }}
|
||||||
|
readOnly: {{ .readOnly }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.server.extraSecretMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
mountPath: {{ .mountPath }}
|
||||||
|
subPath: {{ .subPath }}
|
||||||
|
readOnly: {{ .readOnly }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.extraVolumeMounts }}
|
||||||
|
{{ toYaml .Values.server.extraVolumeMounts | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.sidecarContainers }}
|
||||||
|
{{- toYaml .Values.server.sidecarContainers | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{ toYaml .Values.imagePullSecrets | indent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{ toYaml .Values.server.nodeSelector | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.hostAliases }}
|
||||||
|
hostAliases:
|
||||||
|
{{ toYaml .Values.server.hostAliases | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.securityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{ toYaml .Values.server.securityContext | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{ toYaml .Values.server.tolerations | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{ toYaml .Values.server.affinity | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
terminationGracePeriodSeconds: {{ .Values.server.terminationGracePeriodSeconds }}
|
||||||
|
volumes:
|
||||||
|
- name: config-volume
|
||||||
|
configMap:
|
||||||
|
name: {{ if .Values.server.configMapOverrideName }}{{ .Release.Name }}-{{ .Values.server.configMapOverrideName }}{{- else }}{{ template "prometheus.server.fullname" . }}{{- end }}
|
||||||
|
- name: storage-volume
|
||||||
|
{{- if .Values.server.persistentVolume.enabled }}
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ if .Values.server.persistentVolume.existingClaim }}{{ .Values.server.persistentVolume.existingClaim }}{{- else }}{{ template "prometheus.server.fullname" . }}{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
emptyDir:
|
||||||
|
{{- if .Values.server.emptyDir.sizeLimit }}
|
||||||
|
sizeLimit: {{ .Values.server.emptyDir.sizeLimit }}
|
||||||
|
{{- else }}
|
||||||
|
{}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if .Values.server.extraVolumes }}
|
||||||
|
{{ toYaml .Values.server.extraVolumes | indent 8}}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.server.extraHostPathMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
hostPath:
|
||||||
|
path: {{ .hostPath }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.configmapReload.prometheus.extraConfigmapMounts }}
|
||||||
|
- name: {{ $.Values.configmapReload.prometheus.name }}-{{ .name }}
|
||||||
|
configMap:
|
||||||
|
name: {{ .configMap }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.server.extraConfigmapMounts }}
|
||||||
|
- name: {{ $.Values.server.name }}-{{ .name }}
|
||||||
|
configMap:
|
||||||
|
name: {{ .configMap }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.server.extraSecretMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
secret:
|
||||||
|
secretName: {{ .secretName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.configmapReload.prometheus.extraConfigmapMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
configMap:
|
||||||
|
name: {{ .configMap }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
{{- if .Values.server.enabled -}}
|
||||||
|
{{- if .Values.server.statefulSet.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.server.statefulSet.headless.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.server.statefulSet.headless.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 4 }}
|
||||||
|
{{- if .Values.server.statefulSet.headless.labels }}
|
||||||
|
{{ toYaml .Values.server.statefulSet.headless.labels | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ template "prometheus.server.fullname" . }}-headless
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
clusterIP: None
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: {{ .Values.server.statefulSet.headless.servicePort }}
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9090
|
||||||
|
{{- if .Values.server.statefulSet.headless.gRPC.enabled }}
|
||||||
|
- name: grpc
|
||||||
|
port: {{ .Values.server.statefulSet.headless.gRPC.servicePort }}
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 10901
|
||||||
|
{{- if .Values.server.statefulSet.headless.gRPC.nodePort }}
|
||||||
|
nodePort: {{ .Values.server.statefulSet.headless.gRPC.nodePort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
selector:
|
||||||
|
{{- include "prometheus.server.matchLabels" . | nindent 4 }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
{{- if .Values.server.enabled -}}
|
||||||
|
{{- if .Values.server.ingress.enabled -}}
|
||||||
|
{{- $releaseName := .Release.Name -}}
|
||||||
|
{{- $serviceName := include "prometheus.server.fullname" . }}
|
||||||
|
{{- $servicePort := .Values.server.service.servicePort -}}
|
||||||
|
{{- $extraPaths := .Values.server.ingress.extraPaths -}}
|
||||||
|
{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }}
|
||||||
|
apiVersion: networking.k8s.io/v1beta1
|
||||||
|
{{ else }}
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
{{ end -}}
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.server.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.server.ingress.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 4 }}
|
||||||
|
{{- range $key, $value := .Values.server.ingress.extraLabels }}
|
||||||
|
{{ $key }}: {{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ template "prometheus.server.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
{{- range .Values.server.ingress.hosts }}
|
||||||
|
{{- $url := splitList "/" . }}
|
||||||
|
- host: {{ first $url }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
{{ if $extraPaths }}
|
||||||
|
{{ toYaml $extraPaths | indent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
- path: /{{ rest $url | join "/" }}
|
||||||
|
backend:
|
||||||
|
serviceName: {{ $serviceName }}
|
||||||
|
servicePort: {{ $servicePort }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if .Values.server.ingress.tls }}
|
||||||
|
tls:
|
||||||
|
{{ toYaml .Values.server.ingress.tls | indent 4 }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
{{- if .Values.server.enabled -}}
|
||||||
|
{{- if .Values.networkPolicy.enabled }}
|
||||||
|
apiVersion: {{ template "prometheus.networkPolicy.apiVersion" . }}
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
name: {{ template "prometheus.server.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
podSelector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.server.matchLabels" . | nindent 6 }}
|
||||||
|
ingress:
|
||||||
|
- ports:
|
||||||
|
- port: 9090
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
{{- if .Values.server.podDisruptionBudget.enabled }}
|
||||||
|
apiVersion: policy/v1beta1
|
||||||
|
kind: PodDisruptionBudget
|
||||||
|
metadata:
|
||||||
|
name: {{ template "prometheus.server.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
maxUnavailable: {{ .Values.server.podDisruptionBudget.maxUnavailable }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,53 @@
|
|||||||
|
{{- if .Values.rbac.create }}
|
||||||
|
{{- if .Values.podSecurityPolicy.enabled }}
|
||||||
|
apiVersion: {{ template "prometheus.podSecurityPolicy.apiVersion" . }}
|
||||||
|
kind: PodSecurityPolicy
|
||||||
|
metadata:
|
||||||
|
name: {{ template "prometheus.server.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 4 }}
|
||||||
|
annotations:
|
||||||
|
{{- if .Values.server.podSecurityPolicy.annotations }}
|
||||||
|
{{ toYaml .Values.server.podSecurityPolicy.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
privileged: false
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
allowedCapabilities:
|
||||||
|
- 'CHOWN'
|
||||||
|
volumes:
|
||||||
|
- 'configMap'
|
||||||
|
- 'persistentVolumeClaim'
|
||||||
|
- 'emptyDir'
|
||||||
|
- 'secret'
|
||||||
|
- 'hostPath'
|
||||||
|
allowedHostPaths:
|
||||||
|
- pathPrefix: /etc
|
||||||
|
readOnly: true
|
||||||
|
- pathPrefix: {{ .Values.server.persistentVolume.mountPath }}
|
||||||
|
{{- range .Values.server.extraHostPathMounts }}
|
||||||
|
- pathPrefix: {{ .hostPath }}
|
||||||
|
readOnly: {{ .readOnly }}
|
||||||
|
{{- end }}
|
||||||
|
hostNetwork: false
|
||||||
|
hostPID: false
|
||||||
|
hostIPC: false
|
||||||
|
runAsUser:
|
||||||
|
rule: 'RunAsAny'
|
||||||
|
seLinux:
|
||||||
|
rule: 'RunAsAny'
|
||||||
|
supplementalGroups:
|
||||||
|
rule: 'MustRunAs'
|
||||||
|
ranges:
|
||||||
|
# Forbid adding the root group.
|
||||||
|
- min: 1
|
||||||
|
max: 65535
|
||||||
|
fsGroup:
|
||||||
|
rule: 'MustRunAs'
|
||||||
|
ranges:
|
||||||
|
# Forbid adding the root group.
|
||||||
|
- min: 1
|
||||||
|
max: 65535
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,35 @@
|
|||||||
|
{{- if .Values.server.enabled -}}
|
||||||
|
{{- if not .Values.server.statefulSet.enabled -}}
|
||||||
|
{{- if .Values.server.persistentVolume.enabled -}}
|
||||||
|
{{- if not .Values.server.persistentVolume.existingClaim -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.server.persistentVolume.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.server.persistentVolume.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.server.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
{{ toYaml .Values.server.persistentVolume.accessModes | indent 4 }}
|
||||||
|
{{- if .Values.server.persistentVolume.storageClass }}
|
||||||
|
{{- if (eq "-" .Values.server.persistentVolume.storageClass) }}
|
||||||
|
storageClassName: ""
|
||||||
|
{{- else }}
|
||||||
|
storageClassName: "{{ .Values.server.persistentVolume.storageClass }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.persistentVolume.volumeBindingMode }}
|
||||||
|
volumeBindingModeName: "{{ .Values.server.persistentVolume.volumeBindingMode }}"
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: "{{ .Values.server.persistentVolume.size }}"
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
{{- if and .Values.server.enabled .Values.rbac.create .Values.server.useExistingClusterRoleName .Values.server.namespaces -}}
|
||||||
|
{{ range $.Values.server.namespaces -}}
|
||||||
|
---
|
||||||
|
apiVersion: {{ template "rbac.apiVersion" . }}
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" $ | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.server.fullname" $ }}
|
||||||
|
namespace: {{ . }}
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: {{ template "prometheus.serviceAccountName.server" $ }}
|
||||||
|
{{ include "prometheus.namespace" $ | indent 4 }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: {{ $.Values.server.useExistingClusterRoleName }}
|
||||||
|
{{ end -}}
|
||||||
|
{{ end -}}
|
||||||
@ -0,0 +1,60 @@
|
|||||||
|
{{- if .Values.server.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.server.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.server.service.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 4 }}
|
||||||
|
{{- if .Values.server.service.labels }}
|
||||||
|
{{ toYaml .Values.server.service.labels | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ template "prometheus.server.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.server.service.clusterIP }}
|
||||||
|
clusterIP: {{ .Values.server.service.clusterIP }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.service.externalIPs }}
|
||||||
|
externalIPs:
|
||||||
|
{{ toYaml .Values.server.service.externalIPs | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.service.loadBalancerIP }}
|
||||||
|
loadBalancerIP: {{ .Values.server.service.loadBalancerIP }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.service.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{- range $cidr := .Values.server.service.loadBalancerSourceRanges }}
|
||||||
|
- {{ $cidr }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: {{ .Values.server.service.servicePort }}
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9090
|
||||||
|
{{- if .Values.server.service.nodePort }}
|
||||||
|
nodePort: {{ .Values.server.service.nodePort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.service.gRPC.enabled }}
|
||||||
|
- name: grpc
|
||||||
|
port: {{ .Values.server.service.gRPC.servicePort }}
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 10901
|
||||||
|
{{- if .Values.server.service.gRPC.nodePort }}
|
||||||
|
nodePort: {{ .Values.server.service.gRPC.nodePort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
{{- if and .Values.server.statefulSet.enabled .Values.server.service.statefulsetReplica.enabled }}
|
||||||
|
statefulset.kubernetes.io/pod-name: {{ template "prometheus.server.fullname" . }}-{{ .Values.server.service.statefulsetReplica.replica }}
|
||||||
|
{{- else -}}
|
||||||
|
{{- include "prometheus.server.matchLabels" . | nindent 4 }}
|
||||||
|
{{- if .Values.server.service.sessionAffinity }}
|
||||||
|
sessionAffinity: {{ .Values.server.service.sessionAffinity }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
type: "{{ .Values.server.service.type }}"
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
{{- if .Values.server.enabled -}}
|
||||||
|
{{- if .Values.serviceAccounts.server.create }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.serviceAccountName.server" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.serviceAccounts.server.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,240 @@
|
|||||||
|
{{- if .Values.server.enabled -}}
|
||||||
|
{{- if .Values.server.statefulSet.enabled -}}
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.server.statefulSet.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.server.statefulSet.annotations | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 4 }}
|
||||||
|
{{- if .Values.server.statefulSet.labels}}
|
||||||
|
{{ toYaml .Values.server.statefulSet.labels | nindent 4 }}
|
||||||
|
{{- end}}
|
||||||
|
name: {{ template "prometheus.server.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
serviceName: {{ template "prometheus.server.fullname" . }}-headless
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.server.matchLabels" . | nindent 6 }}
|
||||||
|
replicas: {{ .Values.server.replicaCount }}
|
||||||
|
podManagementPolicy: {{ .Values.server.statefulSet.podManagementPolicy }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.server.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.server.podAnnotations | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 8 }}
|
||||||
|
{{- if .Values.server.podLabels}}
|
||||||
|
{{ toYaml .Values.server.podLabels | nindent 8 }}
|
||||||
|
{{- end}}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.server.priorityClassName }}
|
||||||
|
priorityClassName: "{{ .Values.server.priorityClassName }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.schedulerName }}
|
||||||
|
schedulerName: "{{ .Values.server.schedulerName }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if semverCompare ">=1.13-0" .Capabilities.KubeVersion.GitVersion }}
|
||||||
|
{{- if or (.Values.server.enableServiceLinks) (eq (.Values.server.enableServiceLinks | toString) "<nil>") }}
|
||||||
|
enableServiceLinks: true
|
||||||
|
{{- else }}
|
||||||
|
enableServiceLinks: false
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ template "prometheus.serviceAccountName.server" . }}
|
||||||
|
{{- if .Values.server.extraInitContainers }}
|
||||||
|
initContainers:
|
||||||
|
{{ toYaml .Values.server.extraInitContainers | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
{{- if .Values.configmapReload.prometheus.enabled }}
|
||||||
|
- name: {{ template "prometheus.name" . }}-{{ .Values.server.name }}-{{ .Values.configmapReload.prometheus.name }}
|
||||||
|
image: "{{ .Values.configmapReload.prometheus.image.repository }}:{{ .Values.configmapReload.prometheus.image.tag }}"
|
||||||
|
imagePullPolicy: "{{ .Values.configmapReload.prometheus.image.pullPolicy }}"
|
||||||
|
args:
|
||||||
|
- --volume-dir=/etc/config
|
||||||
|
- --webhook-url=http://127.0.0.1:9090{{ .Values.server.prefixURL }}/-/reload
|
||||||
|
{{- range $key, $value := .Values.configmapReload.prometheus.extraArgs }}
|
||||||
|
- --{{ $key }}={{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.configmapReload.prometheus.extraVolumeDirs }}
|
||||||
|
- --volume-dir={{ . }}
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.configmapReload.prometheus.resources | indent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: config-volume
|
||||||
|
mountPath: /etc/config
|
||||||
|
readOnly: true
|
||||||
|
{{- range .Values.configmapReload.prometheus.extraConfigmapMounts }}
|
||||||
|
- name: {{ $.Values.configmapReload.prometheus.name }}-{{ .name }}
|
||||||
|
mountPath: {{ .mountPath }}
|
||||||
|
subPath: {{ .subPath }}
|
||||||
|
readOnly: {{ .readOnly }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
- name: {{ template "prometheus.name" . }}-{{ .Values.server.name }}
|
||||||
|
image: "{{ .Values.server.image.repository }}:{{ .Values.server.image.tag }}"
|
||||||
|
imagePullPolicy: "{{ .Values.server.image.pullPolicy }}"
|
||||||
|
{{- if .Values.server.env }}
|
||||||
|
env:
|
||||||
|
{{ toYaml .Values.server.env | indent 12}}
|
||||||
|
{{- end }}
|
||||||
|
args:
|
||||||
|
{{- if .Values.server.retention }}
|
||||||
|
- --storage.tsdb.retention.time={{ .Values.server.retention }}
|
||||||
|
{{- end }}
|
||||||
|
- --config.file={{ .Values.server.configPath }}
|
||||||
|
- --storage.tsdb.path={{ .Values.server.persistentVolume.mountPath }}
|
||||||
|
- --web.console.libraries=/etc/prometheus/console_libraries
|
||||||
|
- --web.console.templates=/etc/prometheus/consoles
|
||||||
|
{{- range .Values.server.extraFlags }}
|
||||||
|
- --{{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range $key, $value := .Values.server.extraArgs }}
|
||||||
|
- --{{ $key }}={{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.baseURL }}
|
||||||
|
- --web.external-url={{ .Values.server.baseURL }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- containerPort: 9090
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: {{ .Values.server.prefixURL }}/-/ready
|
||||||
|
port: 9090
|
||||||
|
initialDelaySeconds: {{ .Values.server.readinessProbeInitialDelay }}
|
||||||
|
periodSeconds: {{ .Values.server.readinessProbePeriodSeconds }}
|
||||||
|
timeoutSeconds: {{ .Values.server.readinessProbeTimeout }}
|
||||||
|
failureThreshold: {{ .Values.server.readinessProbeFailureThreshold }}
|
||||||
|
successThreshold: {{ .Values.server.readinessProbeSuccessThreshold }}
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: {{ .Values.server.prefixURL }}/-/healthy
|
||||||
|
port: 9090
|
||||||
|
initialDelaySeconds: {{ .Values.server.livenessProbeInitialDelay }}
|
||||||
|
periodSeconds: {{ .Values.server.livenessProbePeriodSeconds }}
|
||||||
|
timeoutSeconds: {{ .Values.server.livenessProbeTimeout }}
|
||||||
|
failureThreshold: {{ .Values.server.livenessProbeFailureThreshold }}
|
||||||
|
successThreshold: {{ .Values.server.livenessProbeSuccessThreshold }}
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.server.resources | indent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: config-volume
|
||||||
|
mountPath: /etc/config
|
||||||
|
- name: storage-volume
|
||||||
|
mountPath: {{ .Values.server.persistentVolume.mountPath }}
|
||||||
|
subPath: "{{ .Values.server.persistentVolume.subPath }}"
|
||||||
|
{{- range .Values.server.extraHostPathMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
mountPath: {{ .mountPath }}
|
||||||
|
subPath: {{ .subPath }}
|
||||||
|
readOnly: {{ .readOnly }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.server.extraConfigmapMounts }}
|
||||||
|
- name: {{ $.Values.server.name }}-{{ .name }}
|
||||||
|
mountPath: {{ .mountPath }}
|
||||||
|
subPath: {{ .subPath }}
|
||||||
|
readOnly: {{ .readOnly }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.server.extraSecretMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
mountPath: {{ .mountPath }}
|
||||||
|
subPath: {{ .subPath }}
|
||||||
|
readOnly: {{ .readOnly }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.extraVolumeMounts }}
|
||||||
|
{{ toYaml .Values.server.extraVolumeMounts | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.sidecarContainers }}
|
||||||
|
{{- toYaml .Values.server.sidecarContainers | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{ toYaml .Values.imagePullSecrets | indent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{ toYaml .Values.server.nodeSelector | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.hostAliases }}
|
||||||
|
hostAliases:
|
||||||
|
{{ toYaml .Values.server.hostAliases | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.securityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{ toYaml .Values.server.securityContext | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{ toYaml .Values.server.tolerations | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{ toYaml .Values.server.affinity | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
terminationGracePeriodSeconds: {{ .Values.server.terminationGracePeriodSeconds }}
|
||||||
|
volumes:
|
||||||
|
- name: config-volume
|
||||||
|
configMap:
|
||||||
|
name: {{ if .Values.server.configMapOverrideName }}{{ .Release.Name }}-{{ .Values.server.configMapOverrideName }}{{- else }}{{ template "prometheus.server.fullname" . }}{{- end }}
|
||||||
|
{{- range .Values.server.extraHostPathMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
hostPath:
|
||||||
|
path: {{ .hostPath }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.configmapReload.prometheus.extraConfigmapMounts }}
|
||||||
|
- name: {{ $.Values.configmapReload.prometheus.name }}-{{ .name }}
|
||||||
|
configMap:
|
||||||
|
name: {{ .configMap }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.server.extraConfigmapMounts }}
|
||||||
|
- name: {{ $.Values.server.name }}-{{ .name }}
|
||||||
|
configMap:
|
||||||
|
name: {{ .configMap }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.server.extraSecretMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
secret:
|
||||||
|
secretName: {{ .secretName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.configmapReload.prometheus.extraConfigmapMounts }}
|
||||||
|
- name: {{ .name }}
|
||||||
|
configMap:
|
||||||
|
name: {{ .configMap }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.extraVolumes }}
|
||||||
|
{{ toYaml .Values.server.extraVolumes | indent 8}}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.server.persistentVolume.enabled }}
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- metadata:
|
||||||
|
name: storage-volume
|
||||||
|
{{- if .Values.server.persistentVolume.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.server.persistentVolume.annotations | indent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
{{ toYaml .Values.server.persistentVolume.accessModes | indent 10 }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: "{{ .Values.server.persistentVolume.size }}"
|
||||||
|
{{- if .Values.server.persistentVolume.storageClass }}
|
||||||
|
{{- if (eq "-" .Values.server.persistentVolume.storageClass) }}
|
||||||
|
storageClassName: ""
|
||||||
|
{{- else }}
|
||||||
|
storageClassName: "{{ .Values.server.persistentVolume.storageClass }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
- name: storage-volume
|
||||||
|
emptyDir: {}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
{{- if .Values.server.enabled -}}
|
||||||
|
{{- if .Values.server.verticalAutoscaler.enabled -}}
|
||||||
|
apiVersion: autoscaling.k8s.io/v1beta2
|
||||||
|
kind: VerticalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.server.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.server.fullname" . }}-vpa
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
targetRef:
|
||||||
|
{{- if .Values.server.statefulSet.enabled }}
|
||||||
|
apiVersion: "apps/v1"
|
||||||
|
kind: StatefulSet
|
||||||
|
{{- else }}
|
||||||
|
apiVersion: "extensions/v1beta1"
|
||||||
|
kind: Deployment
|
||||||
|
{{- end }}
|
||||||
|
name: {{ template "prometheus.server.fullname" . }}
|
||||||
|
updatePolicy:
|
||||||
|
updateMode: {{ .Values.server.verticalAutoscaler.updateMode | default "Off" | quote }}
|
||||||
|
resourcePolicy:
|
||||||
|
containerPolicies: {{ .Values.server.verticalAutoscaler.containerPolicies | default list | toYaml | trim | nindent 4 }}
|
||||||
|
{{- end -}} {{/* if .Values.server.verticalAutoscaler.enabled */}}
|
||||||
|
{{- end -}} {{/* .Values.server.enabled */}}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
{{- if and .Values.pushgateway.enabled .Values.rbac.create -}}
|
||||||
|
apiVersion: {{ template "rbac.apiVersion" . }}
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.pushgateway.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.pushgateway.fullname" . }}
|
||||||
|
rules:
|
||||||
|
{{- if .Values.podSecurityPolicy.enabled }}
|
||||||
|
- apiGroups:
|
||||||
|
- extensions
|
||||||
|
resources:
|
||||||
|
- podsecuritypolicies
|
||||||
|
verbs:
|
||||||
|
- use
|
||||||
|
resourceNames:
|
||||||
|
- {{ template "prometheus.pushgateway.fullname" . }}
|
||||||
|
{{- else }}
|
||||||
|
[]
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
{{- if and .Values.pushgateway.enabled .Values.rbac.create -}}
|
||||||
|
apiVersion: {{ template "rbac.apiVersion" . }}
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.pushgateway.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.pushgateway.fullname" . }}
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: {{ template "prometheus.serviceAccountName.pushgateway" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 4 }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: {{ template "prometheus.pushgateway.fullname" . }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,110 @@
|
|||||||
|
{{- if .Values.pushgateway.enabled -}}
|
||||||
|
apiVersion: {{ template "prometheus.deployment.apiVersion" . }}
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.pushgateway.deploymentAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.pushgateway.deploymentAnnotations | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.pushgateway.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.pushgateway.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
{{- if .Values.schedulerName }}
|
||||||
|
schedulerName: "{{ .Values.schedulerName }}"
|
||||||
|
{{- end }}
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.pushgateway.matchLabels" . | nindent 6 }}
|
||||||
|
replicas: {{ .Values.pushgateway.replicaCount }}
|
||||||
|
{{- if .Values.pushgateway.strategy }}
|
||||||
|
strategy:
|
||||||
|
{{ toYaml .Values.pushgateway.strategy | trim | indent 4 }}
|
||||||
|
{{ if eq .Values.pushgateway.strategy.type "Recreate" }}rollingUpdate: null{{ end }}
|
||||||
|
{{- end }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.pushgateway.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.pushgateway.podAnnotations | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.pushgateway.labels" . | nindent 8 }}
|
||||||
|
{{- if .Values.pushgateway.podLabels}}
|
||||||
|
{{ toYaml .Values.pushgateway.podLabels | nindent 8 }}
|
||||||
|
{{- end}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: {{ template "prometheus.serviceAccountName.pushgateway" . }}
|
||||||
|
{{- if .Values.pushgateway.extraInitContainers }}
|
||||||
|
initContainers:
|
||||||
|
{{ toYaml .Values.pushgateway.extraInitContainers | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.pushgateway.priorityClassName }}
|
||||||
|
priorityClassName: "{{ .Values.pushgateway.priorityClassName }}"
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
- name: {{ template "prometheus.name" . }}-{{ .Values.pushgateway.name }}
|
||||||
|
image: "{{ .Values.pushgateway.image.repository }}:{{ .Values.pushgateway.image.tag }}"
|
||||||
|
imagePullPolicy: "{{ .Values.pushgateway.image.pullPolicy }}"
|
||||||
|
args:
|
||||||
|
{{- range $key, $value := .Values.pushgateway.extraArgs }}
|
||||||
|
- --{{ $key }}={{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- containerPort: 9091
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
{{- if (index .Values "pushgateway" "extraArgs" "web.route-prefix") }}
|
||||||
|
path: /{{ index .Values "pushgateway" "extraArgs" "web.route-prefix" }}/-/healthy
|
||||||
|
{{- else }}
|
||||||
|
path: /-/healthy
|
||||||
|
{{- end }}
|
||||||
|
port: 9091
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
timeoutSeconds: 10
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
{{- if (index .Values "pushgateway" "extraArgs" "web.route-prefix") }}
|
||||||
|
path: /{{ index .Values "pushgateway" "extraArgs" "web.route-prefix" }}/-/ready
|
||||||
|
{{- else }}
|
||||||
|
path: /-/ready
|
||||||
|
{{- end }}
|
||||||
|
port: 9091
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
timeoutSeconds: 10
|
||||||
|
resources:
|
||||||
|
{{ toYaml .Values.pushgateway.resources | indent 12 }}
|
||||||
|
{{- if .Values.pushgateway.persistentVolume.enabled }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: storage-volume
|
||||||
|
mountPath: "{{ .Values.pushgateway.persistentVolume.mountPath }}"
|
||||||
|
subPath: "{{ .Values.pushgateway.persistentVolume.subPath }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{ toYaml .Values.imagePullSecrets | indent 2 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.pushgateway.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{ toYaml .Values.pushgateway.nodeSelector | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.pushgateway.securityContext }}
|
||||||
|
securityContext:
|
||||||
|
{{ toYaml .Values.pushgateway.securityContext | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.pushgateway.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{ toYaml .Values.pushgateway.tolerations | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.pushgateway.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{ toYaml .Values.pushgateway.affinity | indent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.pushgateway.persistentVolume.enabled }}
|
||||||
|
volumes:
|
||||||
|
- name: storage-volume
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ if .Values.pushgateway.persistentVolume.existingClaim }}{{ .Values.pushgateway.persistentVolume.existingClaim }}{{- else }}{{ template "prometheus.pushgateway.fullname" . }}{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,40 @@
|
|||||||
|
{{- if and .Values.pushgateway.enabled .Values.pushgateway.ingress.enabled -}}
|
||||||
|
{{- $releaseName := .Release.Name -}}
|
||||||
|
{{- $serviceName := include "prometheus.pushgateway.fullname" . }}
|
||||||
|
{{- $servicePort := .Values.pushgateway.service.servicePort -}}
|
||||||
|
{{- $extraPaths := .Values.pushgateway.ingress.extraPaths -}}
|
||||||
|
{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }}
|
||||||
|
apiVersion: networking.k8s.io/v1beta1
|
||||||
|
{{ else }}
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
{{ end -}}
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.pushgateway.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.pushgateway.ingress.annotations | indent 4}}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.pushgateway.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.pushgateway.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
{{- range .Values.pushgateway.ingress.hosts }}
|
||||||
|
{{- $url := splitList "/" . }}
|
||||||
|
- host: {{ first $url }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
{{ if $extraPaths }}
|
||||||
|
{{ toYaml $extraPaths | indent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
- path: /{{ rest $url | join "/" }}
|
||||||
|
backend:
|
||||||
|
serviceName: {{ $serviceName }}
|
||||||
|
servicePort: {{ $servicePort }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if .Values.pushgateway.ingress.tls }}
|
||||||
|
tls:
|
||||||
|
{{ toYaml .Values.pushgateway.ingress.tls | indent 4 }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
{{- if and .Values.pushgateway.enabled .Values.networkPolicy.enabled -}}
|
||||||
|
apiVersion: {{ template "prometheus.networkPolicy.apiVersion" . }}
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
name: {{ template "prometheus.pushgateway.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.pushgateway.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
podSelector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.pushgateway.matchLabels" . | nindent 6 }}
|
||||||
|
ingress:
|
||||||
|
- from:
|
||||||
|
- podSelector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.server.matchLabels" . | nindent 12 }}
|
||||||
|
- ports:
|
||||||
|
- port: 9091
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
{{- if .Values.pushgateway.podDisruptionBudget.enabled }}
|
||||||
|
apiVersion: policy/v1beta1
|
||||||
|
kind: PodDisruptionBudget
|
||||||
|
metadata:
|
||||||
|
name: {{ template "prometheus.pushgateway.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.pushgateway.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
maxUnavailable: {{ .Values.pushgateway.podDisruptionBudget.maxUnavailable }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "prometheus.pushgateway.labels" . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
{{- if .Values.rbac.create }}
|
||||||
|
{{- if .Values.podSecurityPolicy.enabled }}
|
||||||
|
apiVersion: {{ template "prometheus.podSecurityPolicy.apiVersion" . }}
|
||||||
|
kind: PodSecurityPolicy
|
||||||
|
metadata:
|
||||||
|
name: {{ template "prometheus.pushgateway.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.pushgateway.labels" . | nindent 4 }}
|
||||||
|
annotations:
|
||||||
|
{{- if .Values.pushgateway.podSecurityPolicy.annotations }}
|
||||||
|
{{ toYaml .Values.pushgateway.podSecurityPolicy.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
privileged: false
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
requiredDropCapabilities:
|
||||||
|
- ALL
|
||||||
|
volumes:
|
||||||
|
- 'persistentVolumeClaim'
|
||||||
|
- 'secret'
|
||||||
|
allowedHostPaths:
|
||||||
|
- pathPrefix: {{ .Values.pushgateway.persistentVolume.mountPath }}
|
||||||
|
hostNetwork: false
|
||||||
|
hostPID: false
|
||||||
|
hostIPC: false
|
||||||
|
runAsUser:
|
||||||
|
rule: 'RunAsAny'
|
||||||
|
seLinux:
|
||||||
|
rule: 'RunAsAny'
|
||||||
|
supplementalGroups:
|
||||||
|
rule: 'MustRunAs'
|
||||||
|
ranges:
|
||||||
|
# Forbid adding the root group.
|
||||||
|
- min: 1
|
||||||
|
max: 65535
|
||||||
|
fsGroup:
|
||||||
|
rule: 'MustRunAs'
|
||||||
|
ranges:
|
||||||
|
# Forbid adding the root group.
|
||||||
|
- min: 1
|
||||||
|
max: 65535
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,31 @@
|
|||||||
|
{{- if .Values.pushgateway.persistentVolume.enabled -}}
|
||||||
|
{{- if not .Values.pushgateway.persistentVolume.existingClaim -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.pushgateway.persistentVolume.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.pushgateway.persistentVolume.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.pushgateway.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.pushgateway.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
{{ toYaml .Values.pushgateway.persistentVolume.accessModes | indent 4 }}
|
||||||
|
{{- if .Values.pushgateway.persistentVolume.storageClass }}
|
||||||
|
{{- if (eq "-" .Values.pushgateway.persistentVolume.storageClass) }}
|
||||||
|
storageClassName: ""
|
||||||
|
{{- else }}
|
||||||
|
storageClassName: "{{ .Values.pushgateway.persistentVolume.storageClass }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.pushgateway.persistentVolume.volumeBindingMode }}
|
||||||
|
volumeBindingModeName: "{{ .Values.pushgateway.persistentVolume.volumeBindingMode }}"
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: "{{ .Values.pushgateway.persistentVolume.size }}"
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
@ -0,0 +1,41 @@
|
|||||||
|
{{- if .Values.pushgateway.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.pushgateway.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.pushgateway.service.annotations | indent 4}}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.pushgateway.labels" . | nindent 4 }}
|
||||||
|
{{- if .Values.pushgateway.service.labels }}
|
||||||
|
{{ toYaml .Values.pushgateway.service.labels | indent 4}}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ template "prometheus.pushgateway.fullname" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.pushgateway.service.clusterIP }}
|
||||||
|
clusterIP: {{ .Values.pushgateway.service.clusterIP }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.pushgateway.service.externalIPs }}
|
||||||
|
externalIPs:
|
||||||
|
{{ toYaml .Values.pushgateway.service.externalIPs | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.pushgateway.service.loadBalancerIP }}
|
||||||
|
loadBalancerIP: {{ .Values.pushgateway.service.loadBalancerIP }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.pushgateway.service.loadBalancerSourceRanges }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{- range $cidr := .Values.pushgateway.service.loadBalancerSourceRanges }}
|
||||||
|
- {{ $cidr }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: {{ .Values.pushgateway.service.servicePort }}
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9091
|
||||||
|
selector:
|
||||||
|
{{- include "prometheus.pushgateway.matchLabels" . | nindent 4 }}
|
||||||
|
type: "{{ .Values.pushgateway.service.type }}"
|
||||||
|
{{- end }}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
{{- if and .Values.pushgateway.enabled .Values.serviceAccounts.pushgateway.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "prometheus.pushgateway.labels" . | nindent 4 }}
|
||||||
|
name: {{ template "prometheus.serviceAccountName.pushgateway" . }}
|
||||||
|
{{ include "prometheus.namespace" . | indent 2 }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.serviceAccounts.pushgateway.annotations | indent 4 }}
|
||||||
|
{{- end -}}
|
||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue