mirror of
https://github.com/helm/charts.git
synced 2026-08-23 22:37:45 +00:00
Add NetworkPolicy for Prometheus (#1327)
* Add NetworkPolicy for Prometheus * Code review
This commit is contained in:
committed by
Michael Goodness
parent
1b2ad923ae
commit
892f5d8a56
@@ -1,5 +1,5 @@
|
||||
name: prometheus
|
||||
version: 3.1.0
|
||||
version: 3.2.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
|
||||
|
||||
@@ -147,6 +147,7 @@ Parameter | Description | Default
|
||||
`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` |
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
|
||||
@@ -200,3 +201,19 @@ server:
|
||||
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.
|
||||
|
||||
For Kubernetes v1.5 & v1.6, you must also turn on NetworkPolicy by setting the DefaultDeny namespace annotation. Note: this will enforce policy for all pods in the namespace:
|
||||
|
||||
kubectl annotate namespace default "net.beta.kubernetes.io/network-policy={\"ingress\":{\"isolation\":\"DefaultDeny\"}}"
|
||||
|
||||
@@ -50,3 +50,14 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- printf "%s-%s-%s" .Release.Name $name .Values.server.name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Return the appropriate apiVersion for networkpolicy.
|
||||
*/}}
|
||||
{{- define "prometheus.networkPolicy.apiVersion" -}}
|
||||
{{- if and (ge .Capabilities.KubeVersion.Minor "4") (le .Capabilities.KubeVersion.Minor "6") -}}
|
||||
{{- print "extensions/v1beta1" -}}
|
||||
{{- else if ge .Capabilities.KubeVersion.Minor "7" -}}
|
||||
{{- print "networking.k8s.io/v1" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
{{- if .Values.networkPolicy.enabled }}
|
||||
apiVersion: {{ template "prometheus.networkPolicy.apiVersion" . }}
|
||||
kind: NetworkPolicy
|
||||
metadata:
|
||||
name: {{ template "prometheus.alertmanager.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "prometheus.name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||
component: "{{ .Values.alertmanager.name }}"
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
spec:
|
||||
podSelector:
|
||||
matchLabels:
|
||||
app: {{ template "prometheus.name" . }}
|
||||
component: "{{ .Values.alertmanager.name }}"
|
||||
release: {{ .Release.Name }}
|
||||
ingress:
|
||||
- from:
|
||||
- podSelector:
|
||||
matchLabels:
|
||||
release: {{ .Release.Name }}
|
||||
component: "{{ .Values.server.name }}"
|
||||
- ports:
|
||||
- port: 9093
|
||||
{{- end }}
|
||||
@@ -0,0 +1,26 @@
|
||||
{{- if .Values.networkPolicy.enabled }}
|
||||
apiVersion: {{ template "prometheus.networkPolicy.apiVersion" . }}
|
||||
kind: NetworkPolicy
|
||||
metadata:
|
||||
name: {{ template "prometheus.kubeStateMetrics.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "prometheus.name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||
component: "{{ .Values.kubeStateMetrics.name }}"
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
spec:
|
||||
podSelector:
|
||||
matchLabels:
|
||||
app: {{ template "prometheus.name" . }}
|
||||
component: "{{ .Values.kubeStateMetrics.name }}"
|
||||
release: {{ .Release.Name }}
|
||||
ingress:
|
||||
- from:
|
||||
- podSelector:
|
||||
matchLabels:
|
||||
release: {{ .Release.Name }}
|
||||
component: "{{ .Values.server.name }}"
|
||||
- ports:
|
||||
- port: 8080
|
||||
{{- end }}
|
||||
@@ -0,0 +1,21 @@
|
||||
{{- if .Values.networkPolicy.enabled }}
|
||||
apiVersion: {{ template "prometheus.networkPolicy.apiVersion" . }}
|
||||
kind: NetworkPolicy
|
||||
metadata:
|
||||
name: {{ template "prometheus.server.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "prometheus.name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||
component: "{{ .Values.server.name }}"
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
spec:
|
||||
podSelector:
|
||||
matchLabels:
|
||||
app: {{ template "prometheus.name" . }}
|
||||
component: "{{ .Values.server.name }}"
|
||||
release: {{ .Release.Name }}
|
||||
ingress:
|
||||
- ports:
|
||||
- port: 9090
|
||||
{{- end }}
|
||||
@@ -635,3 +635,8 @@ serverFiles:
|
||||
- source_labels: [__meta_kubernetes_pod_name]
|
||||
action: replace
|
||||
target_label: kubernetes_pod_name
|
||||
|
||||
networkPolicy:
|
||||
## Enable creation of NetworkPolicy resources.
|
||||
##
|
||||
enabled: false
|
||||
|
||||
Reference in New Issue
Block a user