Compare commits
No commits in common. "6e9548ba9279d944d32c313a9c779ced28b5883f" and "7f921ff1eb3e25074376aaf4b4d9ffbc48f55956" have entirely different histories.
6e9548ba92
...
7f921ff1eb
61
README.md
61
README.md
@ -68,7 +68,7 @@ cannot use the available CPU time to perform computing operations.
|
|||||||
|
|
||||||
The application must be informed that despite several CPUs only a part (limit) of the available computing time is
|
The application must be informed that despite several CPUs only a part (limit) of the available computing time is
|
||||||
available. As this is a Golang application, this can be implemented using `GOMAXPROCS`. The following example is one way
|
available. As this is a Golang application, this can be implemented using `GOMAXPROCS`. The following example is one way
|
||||||
of defining `GOMAXPROCS` automatically based on the defined CPU limit like `1000m`. Please keep in mind, that the CFS
|
of defining `GOMAXPROCS` automatically based on the defined CPU limit like `100m`. Please keep in mind, that the CFS
|
||||||
rate of `100ms` - default on each kubernetes node, is also very important to avoid CPU throttling.
|
rate of `100ms` - default on each kubernetes node, is also very important to avoid CPU throttling.
|
||||||
|
|
||||||
Further information about this topic can be found [here](https://kanishk.io/posts/cpu-throttling-in-containerized-go-apps/).
|
Further information about this topic can be found [here](https://kanishk.io/posts/cpu-throttling-in-containerized-go-apps/).
|
||||||
@ -76,8 +76,6 @@ Further information about this topic can be found [here](https://kanishk.io/post
|
|||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
> The environment variable `GOMAXPROCS` is set automatically, when a CPU limit is defined. An explicit configuration is
|
> The environment variable `GOMAXPROCS` is set automatically, when a CPU limit is defined. An explicit configuration is
|
||||||
> not anymore required.
|
> not anymore required.
|
||||||
>
|
|
||||||
> Please take care the a CPU limit < `1000m` can also lead to CPU throttling. Please read the linked documentation carefully.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
helm install prometheus-fail2ban-exporter prometheus-exporters/prometheus-fail2ban-exporter \
|
helm install prometheus-fail2ban-exporter prometheus-exporters/prometheus-fail2ban-exporter \
|
||||||
@ -85,7 +83,7 @@ helm install prometheus-fail2ban-exporter prometheus-exporters/prometheus-fail2b
|
|||||||
--set 'prometheus.metrics.serviceMonitor.enabled=true' \
|
--set 'prometheus.metrics.serviceMonitor.enabled=true' \
|
||||||
--set 'daemonSet.fail2banExporter.env.name=GOMAXPROCS' \
|
--set 'daemonSet.fail2banExporter.env.name=GOMAXPROCS' \
|
||||||
--set 'daemonSet.fail2banExporter.env.valueFrom.resourceFieldRef.resource=limits.cpu' \
|
--set 'daemonSet.fail2banExporter.env.valueFrom.resourceFieldRef.resource=limits.cpu' \
|
||||||
--set 'daemonSet.fail2banExporter.resources.limits.cpu=1000m'
|
--set 'daemonSet.fail2banExporter.resources.limits.cpu=100m'
|
||||||
```
|
```
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
@ -148,61 +146,6 @@ helm install prometheus-fail2ban-exporter prometheus-exporters/prometheus-fail2b
|
|||||||
--set 'grafana.enabled=true'
|
--set 'grafana.enabled=true'
|
||||||
```
|
```
|
||||||
|
|
||||||
### Network policies
|
|
||||||
|
|
||||||
Network policies can only take effect, when the used CNI plugin support network policies. The chart supports no custom
|
|
||||||
network policy implementation of CNI plugins. It's support only the official API resource of `networking.k8s.io/v1`.
|
|
||||||
|
|
||||||
The object networkPolicies can contains multiple networkPolicy definitions. There is currently only one example
|
|
||||||
predefined - it's named `default`. Further networkPolicy rules can easy be added by defining additional objects. For example:
|
|
||||||
|
|
||||||
> [!NOTE]
|
|
||||||
> The structure of each custom network policy must be equal like that of default. For this reason don't forget to define
|
|
||||||
> `annotations`, `labels` and the other properties as well.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
networkPolicies:
|
|
||||||
enabled: false
|
|
||||||
default: {}
|
|
||||||
my-custom-network-policy: {}
|
|
||||||
```
|
|
||||||
|
|
||||||
The example below is an excerpt of the `values.yaml` file. The network policy `default` contains ingress rules to allow
|
|
||||||
incoming traffic from Prometheus.
|
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> Please keep in mind, that the namespace and pod selector labels can be different from environment to environment. For
|
|
||||||
> this reason, there is are not default network policy rules defined.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
networkPolicies:
|
|
||||||
enabled: true
|
|
||||||
default:
|
|
||||||
enabled: true
|
|
||||||
annotations: {}
|
|
||||||
labels: {}
|
|
||||||
policyTypes:
|
|
||||||
- Egress
|
|
||||||
- Ingress
|
|
||||||
egress: []
|
|
||||||
ports:
|
|
||||||
- port: 53
|
|
||||||
protocol: TCP
|
|
||||||
- port: 53
|
|
||||||
protocol: UDP
|
|
||||||
ingress:
|
|
||||||
- from:
|
|
||||||
- namespaceSelector:
|
|
||||||
matchLabels:
|
|
||||||
kubernetes.io/metadata.name: monitoring
|
|
||||||
podSelector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: prometheus
|
|
||||||
ports:
|
|
||||||
- port: http
|
|
||||||
protocol: TCP
|
|
||||||
```
|
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
### Global
|
### Global
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
{{/* vim: set filetype=mustache: */}}
|
|
||||||
|
|
||||||
{{/* annotations */}}
|
|
||||||
|
|
||||||
{{- define "prometheus-fail2ban-exporter.networkPolicies.annotations" -}}
|
|
||||||
{{ include "prometheus-fail2ban-exporter.annotations" .context }}
|
|
||||||
{{- if .networkPolicy.annotations }}
|
|
||||||
{{ toYaml .networkPolicy.annotations }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{/* labels */}}
|
|
||||||
|
|
||||||
{{- define "prometheus-fail2ban-exporter.networkPolicies.labels" -}}
|
|
||||||
{{ include "prometheus-fail2ban-exporter.labels" .context }}
|
|
||||||
{{- if .networkPolicy.labels }}
|
|
||||||
{{ toYaml .networkPolicy.labels }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
@ -1,36 +0,0 @@
|
|||||||
{{- if .Values.networkPolicies.enabled }}
|
|
||||||
{{- range $key, $value := .Values.networkPolicies -}}
|
|
||||||
{{- if and (not (eq $key "enabled")) $value.enabled }}
|
|
||||||
---
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: NetworkPolicy
|
|
||||||
metadata:
|
|
||||||
{{- with (include "prometheus-fail2ban-exporter.networkPolicies.annotations" (dict "networkPolicy" $value "context" $) | fromYaml) }}
|
|
||||||
annotations:
|
|
||||||
{{- toYaml . | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with (include "prometheus-fail2ban-exporter.networkPolicies.labels" (dict "networkPolicy" $value "context" $) | fromYaml) }}
|
|
||||||
labels:
|
|
||||||
{{- toYaml . | nindent 4 }}
|
|
||||||
{{- end }}
|
|
||||||
name: {{ printf "%s-%s" (include "prometheus-fail2ban-exporter.fullname" $ ) $key }}
|
|
||||||
namespace: {{ $.Release.Namespace }}
|
|
||||||
spec:
|
|
||||||
podSelector:
|
|
||||||
matchLabels:
|
|
||||||
{{- include "prometheus-fail2ban-exporter.pod.selectorLabels" $ | nindent 6 }}
|
|
||||||
{{- with $value.policyTypes }}
|
|
||||||
policyTypes:
|
|
||||||
{{- toYaml . | nindent 2 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with $value.egress }}
|
|
||||||
egress:
|
|
||||||
{{- toYaml . | nindent 2 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- with $value.ingress }}
|
|
||||||
ingress:
|
|
||||||
{{- toYaml . | nindent 2 }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
@ -1,118 +0,0 @@
|
|||||||
chart:
|
|
||||||
appVersion: 0.1.0
|
|
||||||
version: 0.1.0
|
|
||||||
suite: NetworkPolicies template (basic)
|
|
||||||
release:
|
|
||||||
name: prometheus-fail2ban-exporter-unittest
|
|
||||||
namespace: testing
|
|
||||||
templates:
|
|
||||||
- templates/prometheus-fail2ban-exporter/networkPolicies.yaml
|
|
||||||
tests:
|
|
||||||
- it: Skip networkPolicies in general disabled.
|
|
||||||
set:
|
|
||||||
networkPolicies.enabled: false
|
|
||||||
asserts:
|
|
||||||
- hasDocuments:
|
|
||||||
count: 0
|
|
||||||
|
|
||||||
- it: Skip networkPolicy 'default' when disabled.
|
|
||||||
set:
|
|
||||||
networkPolicies.enabled: true
|
|
||||||
networkPolicies.default.enabled: false
|
|
||||||
asserts:
|
|
||||||
- hasDocuments:
|
|
||||||
count: 0
|
|
||||||
|
|
||||||
- it: Loop over networkPolicies
|
|
||||||
set:
|
|
||||||
networkPolicies.enabled: true
|
|
||||||
networkPolicies.default.enabled: false
|
|
||||||
networkPolicies.nginx.enabled: true
|
|
||||||
networkPolicies.prometheus.enabled: true
|
|
||||||
asserts:
|
|
||||||
- hasDocuments:
|
|
||||||
count: 2
|
|
||||||
|
|
||||||
- it: Template networkPolicy 'default' without policyTypes, egress and ingress configuration
|
|
||||||
set:
|
|
||||||
networkPolicies.enabled: true
|
|
||||||
networkPolicies.default.enabled: true
|
|
||||||
asserts:
|
|
||||||
- hasDocuments:
|
|
||||||
count: 1
|
|
||||||
- containsDocument:
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: NetworkPolicy
|
|
||||||
name: prometheus-fail2ban-exporter-unittest-default
|
|
||||||
namespace: testing
|
|
||||||
- notExists:
|
|
||||||
path: metadata.annotations
|
|
||||||
- equal:
|
|
||||||
path: metadata.labels
|
|
||||||
value:
|
|
||||||
app.kubernetes.io/instance: prometheus-fail2ban-exporter-unittest
|
|
||||||
app.kubernetes.io/managed-by: Helm
|
|
||||||
app.kubernetes.io/name: prometheus-fail2ban-exporter
|
|
||||||
app.kubernetes.io/version: 0.1.0
|
|
||||||
helm.sh/chart: prometheus-fail2ban-exporter-0.1.0
|
|
||||||
- equal:
|
|
||||||
path: spec.podSelector.matchLabels
|
|
||||||
value:
|
|
||||||
app.kubernetes.io/instance: prometheus-fail2ban-exporter-unittest
|
|
||||||
app.kubernetes.io/name: prometheus-fail2ban-exporter
|
|
||||||
- notExists:
|
|
||||||
path: spec.policyTypes
|
|
||||||
- notExists:
|
|
||||||
path: spec.egress
|
|
||||||
- notExists:
|
|
||||||
path: spec.ingress
|
|
||||||
|
|
||||||
- it: Template networkPolicy 'default' with policyTypes, egress and ingress configuration
|
|
||||||
set:
|
|
||||||
networkPolicies.enabled: true
|
|
||||||
networkPolicies.default.enabled: true
|
|
||||||
networkPolicies.default.policyTypes:
|
|
||||||
- Egress
|
|
||||||
- Ingress
|
|
||||||
networkPolicies.default.ingress:
|
|
||||||
- from:
|
|
||||||
- namespaceSelector:
|
|
||||||
matchLabels:
|
|
||||||
kubernetes.io/metadata.name: khv-production
|
|
||||||
podSelector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: prometheus
|
|
||||||
networkPolicies.default.egress:
|
|
||||||
- to:
|
|
||||||
- namespaceSelector:
|
|
||||||
matchLabels:
|
|
||||||
kubernetes.io/metadata.name: database
|
|
||||||
podSelector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: oracle
|
|
||||||
asserts:
|
|
||||||
- equal:
|
|
||||||
path: spec.policyTypes
|
|
||||||
value:
|
|
||||||
- Egress
|
|
||||||
- Ingress
|
|
||||||
- equal:
|
|
||||||
path: spec.egress
|
|
||||||
value:
|
|
||||||
- to:
|
|
||||||
- namespaceSelector:
|
|
||||||
matchLabels:
|
|
||||||
kubernetes.io/metadata.name: database
|
|
||||||
podSelector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: oracle
|
|
||||||
- equal:
|
|
||||||
path: spec.ingress
|
|
||||||
value:
|
|
||||||
- from:
|
|
||||||
- namespaceSelector:
|
|
||||||
matchLabels:
|
|
||||||
kubernetes.io/metadata.name: khv-production
|
|
||||||
podSelector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: prometheus
|
|
50
values.yaml
50
values.yaml
@ -270,53 +270,9 @@ podDisruptionBudget: {}
|
|||||||
# maxUnavailable: 1
|
# maxUnavailable: 1
|
||||||
# minAvailable: 1
|
# minAvailable: 1
|
||||||
|
|
||||||
## @section NetworkPolicies
|
## @section Network
|
||||||
## @param networkPolicies.enabled Enable network policies in general.
|
## @param networkPolicies Deploy network policies based on the used container network interface (CNI) implementation - like calico or weave.
|
||||||
networkPolicies:
|
networkPolicies: {}
|
||||||
enabled: false
|
|
||||||
|
|
||||||
## @param networkPolicies.default.enabled Enable the network policy for accessing the application by default. For example to scape the metrics.
|
|
||||||
## @param networkPolicies.default.annotations Additional network policy annotations.
|
|
||||||
## @param networkPolicies.default.labels Additional network policy labels.
|
|
||||||
## @param networkPolicies.default.policyTypes List of policy types. Supported is ingress, egress or ingress and egress.
|
|
||||||
## @param networkPolicies.default.egress Concrete egress network policy implementation.
|
|
||||||
## @skip networkPolicies.default.egress Skip individual egress configuration.
|
|
||||||
## @param networkPolicies.default.ingress Concrete ingress network policy implementation.
|
|
||||||
## @skip networkPolicies.default.ingress Skip individual ingress configuration.
|
|
||||||
default:
|
|
||||||
enabled: false
|
|
||||||
annotations: {}
|
|
||||||
labels: {}
|
|
||||||
policyTypes: []
|
|
||||||
# - Egress
|
|
||||||
# - Ingress
|
|
||||||
egress: []
|
|
||||||
ingress: []
|
|
||||||
# Allow incoming HTTP traffic from prometheus.
|
|
||||||
#
|
|
||||||
# - from:
|
|
||||||
# - namespaceSelector:
|
|
||||||
# matchLabels:
|
|
||||||
# kubernetes.io/metadata.name: monitoring
|
|
||||||
# podSelector:
|
|
||||||
# matchLabels:
|
|
||||||
# app.kubernetes.io/name: prometheus
|
|
||||||
# ports:
|
|
||||||
# - port: http
|
|
||||||
# protocol: TCP
|
|
||||||
|
|
||||||
# Allow incoming HTTP traffic from ingress-nginx.
|
|
||||||
#
|
|
||||||
# - from:
|
|
||||||
# - namespaceSelector:
|
|
||||||
# matchLabels:
|
|
||||||
# kubernetes.io/metadata.name: ingress-nginx
|
|
||||||
# podSelector:
|
|
||||||
# matchLabels:
|
|
||||||
# app.kubernetes.io/name: ingress-nginx
|
|
||||||
# ports:
|
|
||||||
# - port: http
|
|
||||||
# protocol: TCP
|
|
||||||
|
|
||||||
## @section Prometheus
|
## @section Prometheus
|
||||||
prometheus:
|
prometheus:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user