diff --git a/stable/prometheus-operator/.helmignore b/stable/prometheus-operator/.helmignore index 9797d317a8..aba2fa8ce4 100644 --- a/stable/prometheus-operator/.helmignore +++ b/stable/prometheus-operator/.helmignore @@ -23,3 +23,4 @@ OWNERS hack/ ci/ +prometheus-operator-*.tgz diff --git a/stable/prometheus-operator/Chart.yaml b/stable/prometheus-operator/Chart.yaml index fb27355633..815136ec29 100644 --- a/stable/prometheus-operator/Chart.yaml +++ b/stable/prometheus-operator/Chart.yaml @@ -9,7 +9,7 @@ name: prometheus-operator sources: - https://github.com/coreos/prometheus-operator - https://coreos.com/operators/prometheus -version: 5.0.4 +version: 5.0.6 appVersion: 0.29.0 home: https://github.com/coreos/prometheus-operator keywords: diff --git a/stable/prometheus-operator/README.md b/stable/prometheus-operator/README.md index 2090f2026f..9df369cc6f 100644 --- a/stable/prometheus-operator/README.md +++ b/stable/prometheus-operator/README.md @@ -182,6 +182,7 @@ The following tables list the configurable parameters of the prometheus-operator | `prometheus.ingress.annotations` | Prometheus Ingress annotations | `{}` | | `prometheus.ingress.labels` | Prometheus Ingress additional labels | `{}` | | `prometheus.ingress.hosts` | Prometheus Ingress hostnames | `[]` | +| `prometheus.ingress.paths` | Prometheus Ingress paths | `[]` | | `prometheus.ingress.tls` | Prometheus Ingress TLS configuration (YAML) | `[]` | | `prometheus.service.type` | Prometheus Service type | `ClusterIP` | | `prometheus.service.clusterIP` | Prometheus service clusterIP IP | `""` | @@ -220,8 +221,8 @@ The following tables list the configurable parameters of the prometheus-operator | `prometheus.prometheusSpec.secrets` | Secrets is a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. The Secrets are mounted into /etc/prometheus/secrets/. Secrets changes after initial creation of a Prometheus object are not reflected in the running Pods. To change the secrets mounted into the Prometheus Pods, the object must be deleted and recreated with the new list of secrets. | `[]` | | `prometheus.prometheusSpec.configMaps` | ConfigMaps is a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. The ConfigMaps are mounted into /etc/prometheus/configmaps/ | `[]` | | `prometheus.prometheusSpec.query` | QuerySpec defines the query command line flags when starting Prometheus. Not all parameters are supported by the operator - [see coreos documentation](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#queryspec) | `{}` | -|`prometheus.prometheusSpec.podAntiAffinity` | Pod anti-affinity can prevent the scheduler from placing Prometheus replicas on the same node. The default value "soft" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided. The value "hard" means that the scheduler is *required* to not schedule two replica pods onto the same node. The value "" will disable pod anti-affinity so that no anti-affinity rules will be configured. | `""` | -|`prometheus.prometheusSpec.podAntiAffinityTopologyKey` | If anti-affinity is enabled sets the topologyKey to use for anti-affinity. This can be changed to, for example `failure-domain.beta.kubernetes.io/zone`| `kubernetes.io/hostname` | +| `prometheus.prometheusSpec.podAntiAffinity` | Pod anti-affinity can prevent the scheduler from placing Prometheus replicas on the same node. The default value "soft" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided. The value "hard" means that the scheduler is *required* to not schedule two replica pods onto the same node. The value "" will disable pod anti-affinity so that no anti-affinity rules will be configured. | `""` | +| `prometheus.prometheusSpec.podAntiAffinityTopologyKey` | If anti-affinity is enabled sets the topologyKey to use for anti-affinity. This can be changed to, for example `failure-domain.beta.kubernetes.io/zone`| `kubernetes.io/hostname` | | `prometheus.prometheusSpec.tolerations` | If specified, the pod's tolerations. | `[]` | | `prometheus.prometheusSpec.remoteWrite` | If specified, the remote_write spec. This is an experimental feature, it may change in any upcoming release in a breaking way. | `[]` | | `prometheus.prometheusSpec.remoteRead` | If specified, the remote_read spec. This is an experimental feature, it may change in any upcoming release in a breaking way. | `[]` | @@ -250,6 +251,7 @@ The following tables list the configurable parameters of the prometheus-operator | `alertmanager.ingress.annotations` | Alertmanager Ingress annotations | `{}` | | `alertmanager.ingress.labels` | Alertmanager Ingress additional labels | `{}` | | `alertmanager.ingress.hosts` | Alertmanager Ingress hostnames | `[]` | +| `alertmanager.ingress.paths` | Alertmanager Ingress paths | `[]` | | `alertmanager.ingress.tls` | Alertmanager Ingress TLS configuration (YAML) | `[]` | | `alertmanager.service.type` | Alertmanager Service type | `ClusterIP` | | `alertmanager.service.clusterIP` | Alertmanager service clusterIP IP | `""` | @@ -275,7 +277,7 @@ The following tables list the configurable parameters of the prometheus-operator | `alertmanager.alertmanagerSpec.nodeSelector` | Define which Nodes the Pods are scheduled on. | `{}` | | `alertmanager.alertmanagerSpec.resources` | Define resources requests and limits for single Pods. | `{}` | | `alertmanager.alertmanagerSpec.podAntiAffinity` | Pod anti-affinity can prevent the scheduler from placing Prometheus replicas on the same node. The default value "soft" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided. The value "hard" means that the scheduler is *required* to not schedule two replica pods onto the same node. The value "" will disable pod anti-affinity so that no anti-affinity rules will be configured. | `""` | -|`prometheus.prometheusSpec.podAntiAffinityTopologyKey` | If anti-affinity is enabled sets the topologyKey to use for anti-affinity. This can be changed to, for example `failure-domain.beta.kubernetes.io/zone`| `kubernetes.io/hostname` | +| `alertmanager.alertmanagerSpec.podAntiAffinityTopologyKey` | If anti-affinity is enabled sets the topologyKey to use for anti-affinity. This can be changed to, for example `failure-domain.beta.kubernetes.io/zone`| `kubernetes.io/hostname` | | `alertmanager.alertmanagerSpec.tolerations` | If specified, the pod's tolerations. | `[]` | | `alertmanager.alertmanagerSpec.securityContext` | SecurityContext holds pod-level security attributes and common container settings. This defaults to non root user with uid 1000 and gid 2000 in order to support migration from operator version < 0.26 | `{"runAsNonRoot": true, "runAsUser": 1000, "fsGroup": 2000}` | | `alertmanager.alertmanagerSpec.listenLocal` | ListenLocal makes the Alertmanager server listen on loopback, so that it does not bind against the Pod IP. Note this is only for the Alertmanager UI, not the gossip communication. | `false` | diff --git a/stable/prometheus-operator/ci/test-values.yaml b/stable/prometheus-operator/ci/test-values.yaml index b6f19a3d6d..b7fbfde56c 100644 --- a/stable/prometheus-operator/ci/test-values.yaml +++ b/stable/prometheus-operator/ci/test-values.yaml @@ -144,6 +144,11 @@ alertmanager: hosts: [] # - alertmanager.domain.com + ## Paths to use for ingress rules - one path should match the alertmanagerSpec.routePrefix + ## + paths: [] + # - / + ## TLS configuration for Alertmanager Ingress ## Secret must be manually created in the namespace ## @@ -317,11 +322,11 @@ grafana: adminPassword: prom-operator ingress: - ## If true, Prometheus Ingress will be created + ## If true, Grafana Ingress will be created ## enabled: false - ## Annotations for Prometheus Ingress + ## Annotations for Grafana Ingress ## annotations: {} # kubernetes.io/ingress.class: nginx @@ -335,16 +340,19 @@ grafana: ## Must be provided if Ingress is enable. ## # hosts: - # - prometheus.domain.com + # - grafana.domain.com hosts: [] - ## TLS configuration for prometheus Ingress + ## Path for grafana ingress + path: / + + ## TLS configuration for grafana Ingress ## Secret must be manually created in the namespace ## tls: [] - # - secretName: prometheus-general-tls + # - secretName: grafana-general-tls # hosts: - # - prometheus.example.com + # - grafana.example.com sidecar: dashboards: @@ -645,7 +653,7 @@ prometheusOperator: ## Port to expose on each node ## Only used if service.type is 'NodePort' ## - nodePort: 38080 + nodePort: 30080 ## Additional ports to open for Prometheus service ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#multi-port-services @@ -818,7 +826,7 @@ prometheus: ## Port to expose on each node ## Only used if service.type is 'NodePort' ## - nodePort: 39090 + nodePort: 30090 ## Loadbalancer IP ## Only use if service.type is "loadbalancer" @@ -859,6 +867,11 @@ prometheus: # - prometheus.domain.com hosts: [] + ## Paths to use for ingress rules - one path should match the prometheusSpec.routePrefix + ## + paths: [] + # - / + ## TLS configuration for Prometheus Ingress ## Secret must be manually created in the namespace ## diff --git a/stable/prometheus-operator/templates/alertmanager/ingress.yaml b/stable/prometheus-operator/templates/alertmanager/ingress.yaml index fd657f71be..ac6306bf07 100644 --- a/stable/prometheus-operator/templates/alertmanager/ingress.yaml +++ b/stable/prometheus-operator/templates/alertmanager/ingress.yaml @@ -1,6 +1,8 @@ {{- if and .Values.alertmanager.enabled .Values.alertmanager.ingress.enabled }} -{{- $routePrefix := .Values.alertmanager.alertmanagerSpec.routePrefix }} {{- $serviceName := printf "%s-%s" (include "prometheus-operator.fullname" .) "alertmanager" }} +{{- $servicePort := 9093 -}} +{{- $routePrefix := list .Values.alertmanager.alertmanagerSpec.routePrefix }} +{{- $paths := .Values.alertmanager.ingress.paths | default $routePrefix -}} apiVersion: extensions/v1beta1 kind: Ingress metadata: @@ -17,17 +19,30 @@ metadata: {{ include "prometheus-operator.labels" . | indent 4 }} spec: rules: - {{- range $host := .Values.alertmanager.ingress.hosts }} - - host: {{ . }} + {{- if .Values.alertmanager.ingress.hosts }} + {{- range $host := .Values.alertmanager.ingress.hosts }} + - host: {{ tpl $host $ }} http: paths: - - path: "{{ $routePrefix }}" + {{- range $p := $paths }} + - path: {{ tpl $p $ }} backend: serviceName: {{ $serviceName }} - servicePort: 9093 - {{- end }} -{{- if .Values.alertmanager.ingress.tls }} + servicePort: {{ $servicePort }} + {{- end -}} + {{- end -}} + {{- else }} + - http: + paths: + {{- range $p := $paths }} + - path: {{ tpl $p $ }} + backend: + serviceName: {{ $serviceName }} + servicePort: {{ $servicePort }} + {{- end -}} + {{- end -}} + {{- if .Values.alertmanager.ingress.tls }} tls: {{ toYaml .Values.alertmanager.ingress.tls | indent 4 }} -{{- end }} -{{- end }} \ No newline at end of file + {{- end -}} +{{- end -}} diff --git a/stable/prometheus-operator/templates/prometheus/ingress.yaml b/stable/prometheus-operator/templates/prometheus/ingress.yaml index e013e9608b..d6b16ace3b 100644 --- a/stable/prometheus-operator/templates/prometheus/ingress.yaml +++ b/stable/prometheus-operator/templates/prometheus/ingress.yaml @@ -1,6 +1,8 @@ {{- if and .Values.prometheus.enabled .Values.prometheus.ingress.enabled }} -{{- $routePrefix := .Values.prometheus.prometheusSpec.routePrefix }} {{- $serviceName := printf "%s-%s" (include "prometheus-operator.fullname" .) "prometheus" }} +{{- $servicePort := 9090 -}} +{{- $routePrefix := list .Values.prometheus.prometheusSpec.routePrefix }} +{{- $paths := .Values.prometheus.ingress.paths | default $routePrefix -}} apiVersion: extensions/v1beta1 kind: Ingress metadata: @@ -17,17 +19,30 @@ metadata: {{- end }} spec: rules: - {{- range $host := .Values.prometheus.ingress.hosts }} - - host: {{ . }} + {{- if .Values.prometheus.ingress.hosts }} + {{- range $host := .Values.prometheus.ingress.hosts }} + - host: {{ tpl $host $ }} http: paths: - - path: "{{ $routePrefix }}" + {{- range $p := $paths }} + - path: {{ tpl $p $ }} backend: serviceName: {{ $serviceName }} - servicePort: 9090 - {{- end }} -{{- if .Values.prometheus.ingress.tls }} + servicePort: {{ $servicePort }} + {{- end -}} + {{- end -}} + {{- else }} + - http: + paths: + {{- range $p := $paths }} + - path: {{ tpl $p $ }} + backend: + serviceName: {{ $serviceName }} + servicePort: {{ $servicePort }} + {{- end -}} + {{- end -}} + {{- if .Values.prometheus.ingress.tls }} tls: {{ toYaml .Values.prometheus.ingress.tls | indent 4 }} -{{- end }} -{{- end }} \ No newline at end of file + {{- end -}} +{{- end -}} diff --git a/stable/prometheus-operator/values.yaml b/stable/prometheus-operator/values.yaml index 364a3e10e7..96a444072c 100644 --- a/stable/prometheus-operator/values.yaml +++ b/stable/prometheus-operator/values.yaml @@ -144,6 +144,11 @@ alertmanager: hosts: [] # - alertmanager.domain.com + ## Paths to use for ingress rules - one path should match the alertmanagerSpec.routePrefix + ## + paths: [] + # - / + ## TLS configuration for Alertmanager Ingress ## Secret must be manually created in the namespace ## @@ -317,11 +322,11 @@ grafana: adminPassword: prom-operator ingress: - ## If true, Prometheus Ingress will be created + ## If true, Grafana Ingress will be created ## enabled: false - ## Annotations for Prometheus Ingress + ## Annotations for Grafana Ingress ## annotations: {} # kubernetes.io/ingress.class: nginx @@ -335,16 +340,19 @@ grafana: ## Must be provided if Ingress is enable. ## # hosts: - # - prometheus.domain.com + # - grafana.domain.com hosts: [] - ## TLS configuration for prometheus Ingress + ## Path for grafana ingress + path: / + + ## TLS configuration for grafana Ingress ## Secret must be manually created in the namespace ## tls: [] - # - secretName: prometheus-general-tls + # - secretName: grafana-general-tls # hosts: - # - prometheus.example.com + # - grafana.example.com sidecar: dashboards: @@ -859,6 +867,11 @@ prometheus: # - prometheus.domain.com hosts: [] + ## Paths to use for ingress rules - one path should match the prometheusSpec.routePrefix + ## + paths: [] + # - / + ## TLS configuration for Prometheus Ingress ## Secret must be manually created in the namespace ##