You've already forked reposilite-charts
feat(prometheus): add podMonitor and serviceMonitor
This patch adds Prometheus podMonitor and serviceMonitor.
This commit is contained in:
@@ -7,19 +7,23 @@ release:
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/deployment.yaml
|
||||
- templates/secretPrometheusBasicAuth.yaml
|
||||
tests:
|
||||
- it: Rendering default
|
||||
set: {}
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 1
|
||||
template: templates/deployment.yaml
|
||||
- containsDocument:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: reposilite-unittest
|
||||
namespace: testing
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: metadata.annotations
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: metadata.labels
|
||||
value:
|
||||
@@ -28,14 +32,17 @@ tests:
|
||||
app.kubernetes.io/name: reposilite
|
||||
app.kubernetes.io/version: 0.1.0
|
||||
helm.sh/chart: reposilite-0.1.0
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.replicas
|
||||
value: 1
|
||||
template: templates/deployment.yaml
|
||||
- isSubset:
|
||||
path: spec.selector.matchLabels
|
||||
content:
|
||||
app.kubernetes.io/instance: reposilite-unittest
|
||||
app.kubernetes.io/name: reposilite
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.strategy
|
||||
value:
|
||||
@@ -43,9 +50,10 @@ tests:
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 1
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.metadata.annotations
|
||||
value: sadsdf
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.metadata.labels
|
||||
value:
|
||||
@@ -54,25 +62,33 @@ tests:
|
||||
app.kubernetes.io/name: reposilite
|
||||
app.kubernetes.io/version: 0.1.0
|
||||
helm.sh/chart: reposilite-0.1.0
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.affinity
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.containers[0].args
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.containers[0].command
|
||||
template: templates/deployment.yaml
|
||||
- contains:
|
||||
path: spec.template.spec.containers[0].env
|
||||
content:
|
||||
name: JAVA_OPTS
|
||||
value: "-Xmx64M"
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.containers[0].envFrom
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].image
|
||||
value: docker.io/dzikoysk/reposilite:0.1.0
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].imagePullPolicy
|
||||
value: IfNotPresent
|
||||
template: templates/deployment.yaml
|
||||
- isSubset:
|
||||
path: spec.template.spec.containers[0].livenessProbe
|
||||
content:
|
||||
@@ -83,15 +99,18 @@ tests:
|
||||
periodSeconds: 60
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 3
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].name
|
||||
value: reposilite
|
||||
template: templates/deployment.yaml
|
||||
- contains:
|
||||
path: spec.template.spec.containers[0].ports
|
||||
content:
|
||||
name: http
|
||||
containerPort: 8080
|
||||
protocol: TCP
|
||||
template: templates/deployment.yaml
|
||||
- isSubset:
|
||||
path: spec.template.spec.containers[0].readinessProbe
|
||||
content:
|
||||
@@ -102,42 +121,60 @@ tests:
|
||||
periodSeconds: 15
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 3
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.containers[0].resources
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.containers[0].securityContext
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.containers[0].volumeMounts
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.dnsConfig
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.dnsPolicy
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.hostname
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.hostNetwork
|
||||
value: false
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.imagePullSecrets
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.initContainers
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.nodeSelector
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.priorityClassName
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.restartPolicy
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.subdomain
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.terminationGracePeriodSeconds
|
||||
value: 60
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.tolerations
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.topologySpreadConstraints
|
||||
template: templates/deployment.yaml
|
||||
- notExists:
|
||||
path: spec.template.spec.volumes
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test custom replicas
|
||||
set:
|
||||
@@ -146,6 +183,7 @@ tests:
|
||||
- equal:
|
||||
path: spec.replicas
|
||||
value: 3
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test custom strategy
|
||||
set:
|
||||
@@ -162,6 +200,7 @@ tests:
|
||||
rollingUpdate:
|
||||
maxSurge: 10
|
||||
maxUnavailable: 5
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test custom affinity
|
||||
set:
|
||||
@@ -188,6 +227,7 @@ tests:
|
||||
values:
|
||||
- antarctica-east1
|
||||
- antarctica-west1
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test additional arguments
|
||||
set:
|
||||
@@ -200,6 +240,7 @@ tests:
|
||||
value:
|
||||
- --foo=bar
|
||||
- --bar=foo
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test additional commands
|
||||
set:
|
||||
@@ -210,6 +251,7 @@ tests:
|
||||
path: spec.template.spec.containers[0].command
|
||||
value:
|
||||
- /bin/bash
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test custom imageRegistry and imageRepository
|
||||
set:
|
||||
@@ -220,6 +262,7 @@ tests:
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].image
|
||||
value: registry.example.local/path/special/reposilite:2.0.0
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test custom imagePullPolicy
|
||||
set:
|
||||
@@ -228,17 +271,7 @@ tests:
|
||||
- equal:
|
||||
path: spec.template.spec.containers[0].imagePullPolicy
|
||||
value: Always
|
||||
|
||||
- it: Test custom port
|
||||
set:
|
||||
service.port: 8443
|
||||
asserts:
|
||||
- contains:
|
||||
path: spec.template.spec.containers[0].ports
|
||||
content:
|
||||
name: http
|
||||
containerPort: 8443
|
||||
protocol: TCP
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test custom resources
|
||||
set:
|
||||
@@ -259,6 +292,7 @@ tests:
|
||||
requests:
|
||||
cpu: 25m
|
||||
memory: 100MB
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test custom securityContext
|
||||
set:
|
||||
@@ -285,6 +319,7 @@ tests:
|
||||
readOnlyRootFilesystem: true
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1000
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test custom volumeMounts
|
||||
set:
|
||||
@@ -297,6 +332,7 @@ tests:
|
||||
content:
|
||||
name: data
|
||||
mountPath: /usr/lib/data
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test dnsConfig
|
||||
set:
|
||||
@@ -311,6 +347,7 @@ tests:
|
||||
nameservers:
|
||||
- "8.8.8.8"
|
||||
- "8.8.4.4"
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test dnsPolicy
|
||||
set:
|
||||
@@ -319,6 +356,7 @@ tests:
|
||||
- equal:
|
||||
path: spec.template.spec.dnsPolicy
|
||||
value: ClusterFirst
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test hostNetwork, hostname, subdomain
|
||||
set:
|
||||
@@ -329,12 +367,15 @@ tests:
|
||||
- equal:
|
||||
path: spec.template.spec.hostNetwork
|
||||
value: true
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.hostname
|
||||
value: pg-exporter
|
||||
template: templates/deployment.yaml
|
||||
- equal:
|
||||
path: spec.template.spec.subdomain
|
||||
value: exporters.internal
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test imagePullSecrets
|
||||
set:
|
||||
@@ -347,6 +388,7 @@ tests:
|
||||
value:
|
||||
- name: my-pull-secret
|
||||
- name: my-special-secret
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test nodeSelector
|
||||
set:
|
||||
@@ -357,6 +399,7 @@ tests:
|
||||
path: spec.template.spec.nodeSelector
|
||||
value:
|
||||
foo: bar
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test priorityClassName
|
||||
set:
|
||||
@@ -365,6 +408,7 @@ tests:
|
||||
- equal:
|
||||
path: spec.template.spec.priorityClassName
|
||||
value: my-priority
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test restartPolicy
|
||||
set:
|
||||
@@ -373,6 +417,7 @@ tests:
|
||||
- equal:
|
||||
path: spec.template.spec.restartPolicy
|
||||
value: Always
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test custom securityContext
|
||||
set:
|
||||
@@ -389,6 +434,7 @@ tests:
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test terminationGracePeriodSeconds
|
||||
set:
|
||||
@@ -397,6 +443,7 @@ tests:
|
||||
- equal:
|
||||
path: spec.template.spec.terminationGracePeriodSeconds
|
||||
value: 120
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test tolerations
|
||||
set:
|
||||
@@ -413,6 +460,7 @@ tests:
|
||||
operator: Equal
|
||||
value: ssd
|
||||
effect: NoSchedule
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test topologySpreadConstraints
|
||||
set:
|
||||
@@ -431,6 +479,7 @@ tests:
|
||||
labelSelector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/instance: reposilite
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Test additional volumes
|
||||
set:
|
||||
@@ -445,3 +494,4 @@ tests:
|
||||
- name: data
|
||||
hostPath:
|
||||
path: /usr/lib/data
|
||||
template: templates/deployment.yaml
|
@@ -7,6 +7,7 @@ release:
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/deployment.yaml
|
||||
- templates/secretPrometheusBasicAuth.yaml
|
||||
tests:
|
||||
- it: Rendering default volumes and volumeMounts with persistent volume claim
|
||||
set:
|
||||
@@ -17,17 +18,20 @@ tests:
|
||||
content:
|
||||
name: REPOSILITE_DATA
|
||||
value: /app/data
|
||||
template: templates/deployment.yaml
|
||||
- contains:
|
||||
path: spec.template.spec.containers[0].volumeMounts
|
||||
content:
|
||||
name: data
|
||||
mountPath: /app/data
|
||||
template: templates/deployment.yaml
|
||||
- contains:
|
||||
path: spec.template.spec.volumes
|
||||
content:
|
||||
name: data
|
||||
persistentVolumeClaim:
|
||||
claimName: reposilite-unittest
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Rendering custom volumes and volumeMounts with persistent volume claim
|
||||
set:
|
||||
@@ -39,17 +43,20 @@ tests:
|
||||
content:
|
||||
name: REPOSILITE_DATA
|
||||
value: /usr/lib/reposilite/data
|
||||
template: templates/deployment.yaml
|
||||
- contains:
|
||||
path: spec.template.spec.containers[0].volumeMounts
|
||||
content:
|
||||
name: data
|
||||
mountPath: /usr/lib/reposilite/data
|
||||
template: templates/deployment.yaml
|
||||
- contains:
|
||||
path: spec.template.spec.volumes
|
||||
content:
|
||||
name: data
|
||||
persistentVolumeClaim:
|
||||
claimName: reposilite-unittest
|
||||
template: templates/deployment.yaml
|
||||
|
||||
- it: Rendering custom volumes and volumeMounts with persistent volume claim
|
||||
set:
|
||||
@@ -62,14 +69,17 @@ tests:
|
||||
content:
|
||||
name: REPOSILITE_DATA
|
||||
value: /app/data
|
||||
template: templates/deployment.yaml
|
||||
- contains:
|
||||
path: spec.template.spec.containers[0].volumeMounts
|
||||
content:
|
||||
name: data
|
||||
mountPath: /app/data
|
||||
template: templates/deployment.yaml
|
||||
- contains:
|
||||
path: spec.template.spec.volumes
|
||||
content:
|
||||
name: data
|
||||
persistentVolumeClaim:
|
||||
claimName: my-custom-pvc
|
||||
claimName: my-custom-pvc
|
||||
template: templates/deployment.yaml
|
37
unittests/deployment/prometheusPodMonitor.yaml
Normal file
37
unittests/deployment/prometheusPodMonitor.yaml
Normal file
@@ -0,0 +1,37 @@
|
||||
chart:
|
||||
appVersion: 0.1.0
|
||||
version: 0.1.0
|
||||
suite: Add prometheus basic auth variables
|
||||
release:
|
||||
name: reposilite-unittest
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/deployment.yaml
|
||||
- templates/secretPrometheusBasicAuth.yaml
|
||||
tests:
|
||||
- it: Rendering default environment variables with enabled prometheus metrics podMonitor
|
||||
set:
|
||||
prometheus.metrics.enabled: true
|
||||
prometheus.metrics.podMonitor.enabled: true
|
||||
asserts:
|
||||
- exists:
|
||||
path: spec.template.metadata.annotations.checksum/secret-reposilite-unittest-basic-auth-credentials
|
||||
template: templates/deployment.yaml
|
||||
- contains:
|
||||
path: spec.template.spec.containers[0].env
|
||||
content:
|
||||
name: REPOSILITE_PROMETHEUS_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: reposilite-unittest-basic-auth-credentials
|
||||
key: password
|
||||
template: templates/deployment.yaml
|
||||
- contains:
|
||||
path: spec.template.spec.containers[0].env
|
||||
content:
|
||||
name: REPOSILITE_PROMETHEUS_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: reposilite-unittest-basic-auth-credentials
|
||||
key: username
|
||||
template: templates/deployment.yaml
|
177
unittests/podMonitors/podMonitor.yaml
Normal file
177
unittests/podMonitors/podMonitor.yaml
Normal file
@@ -0,0 +1,177 @@
|
||||
chart:
|
||||
appVersion: 0.1.0
|
||||
version: 0.1.0
|
||||
suite: PodMonitor template
|
||||
release:
|
||||
name: reposilite-unittest
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/podMonitor.yaml
|
||||
tests:
|
||||
- it: Skip podMonitor when metrics are disabled.
|
||||
set:
|
||||
prometheus.metrics.enabled: false
|
||||
prometheus.metrics.podMonitor.enabled: true
|
||||
prometheus.metrics.serviceMonitor.enabled: true
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
- it: Skip podMonitor when podMonitor is disabled.
|
||||
set:
|
||||
prometheus.metrics.enabled: true
|
||||
prometheus.metrics.podMonitor.enabled: false
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
- it: Skip podMonitor when both monitor types are enabled.
|
||||
set:
|
||||
prometheus.metrics.enabled: true
|
||||
prometheus.metrics.podMonitor.enabled: true
|
||||
prometheus.metrics.serviceMonitor.enabled: true
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
- it: Rendering podMonitor with default values - enabled manually.
|
||||
set:
|
||||
prometheus.metrics.enabled: true
|
||||
prometheus.metrics.podMonitor.enabled: true
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 1
|
||||
- containsDocument:
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: PodMonitor
|
||||
name: reposilite-unittest
|
||||
namespace: testing
|
||||
- notExists:
|
||||
path: metadata.annotations
|
||||
- equal:
|
||||
path: metadata.labels
|
||||
value:
|
||||
app.kubernetes.io/instance: reposilite-unittest
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: reposilite
|
||||
app.kubernetes.io/version: 0.1.0
|
||||
helm.sh/chart: reposilite-0.1.0
|
||||
- isSubset:
|
||||
path: spec.podMetricsEndpoints[0].basicAuth
|
||||
content:
|
||||
password:
|
||||
key: password
|
||||
name: reposilite-unittest-basic-auth-credentials
|
||||
username:
|
||||
key: username
|
||||
name: reposilite-unittest-basic-auth-credentials
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].enableHttp2
|
||||
value: true
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].followRedirects
|
||||
value: false
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].honorLabels
|
||||
value: false
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].interval
|
||||
value: 60s
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].path
|
||||
value: /metrics
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].port
|
||||
value: "8080"
|
||||
- notExists:
|
||||
path: spec.podMetricsEndpoints[0].relabelings
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].scrapeTimeout
|
||||
value: 30s
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].scheme
|
||||
value: http
|
||||
- contains:
|
||||
path: spec.namespaceSelector.matchNames
|
||||
content:
|
||||
testing
|
||||
- equal:
|
||||
path: spec.selector.matchLabels
|
||||
value:
|
||||
app.kubernetes.io/instance: reposilite-unittest
|
||||
app.kubernetes.io/name: reposilite
|
||||
|
||||
- it: Render podMonitor with custom annotations and labels.
|
||||
set:
|
||||
prometheus.metrics.enabled: true
|
||||
prometheus.metrics.podMonitor.enabled: true
|
||||
prometheus.metrics.podMonitor.annotations:
|
||||
foo: bar
|
||||
prometheus.metrics.podMonitor.labels:
|
||||
bar: foo
|
||||
asserts:
|
||||
- equal:
|
||||
path: metadata.annotations
|
||||
value:
|
||||
foo: bar
|
||||
- equal:
|
||||
path: metadata.labels
|
||||
value:
|
||||
app.kubernetes.io/instance: reposilite-unittest
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: reposilite
|
||||
app.kubernetes.io/version: 0.1.0
|
||||
bar: foo
|
||||
helm.sh/chart: reposilite-0.1.0
|
||||
|
||||
- it: Change defaults
|
||||
set:
|
||||
prometheus.metrics.enabled: true
|
||||
prometheus.metrics.podMonitor.enabled: true
|
||||
prometheus.metrics.podMonitor.enableHttp2: false
|
||||
prometheus.metrics.podMonitor.followRedirects: true
|
||||
prometheus.metrics.podMonitor.honorLabels: true
|
||||
prometheus.metrics.podMonitor.interval: "180s"
|
||||
prometheus.metrics.podMonitor.path: "/my-metrics"
|
||||
prometheus.metrics.podMonitor.relabelings:
|
||||
- sourceLabels: [ container ]
|
||||
separator: ";"
|
||||
regex: "app"
|
||||
replacement: "$1"
|
||||
action: "drop"
|
||||
prometheus.metrics.podMonitor.scrapeTimeout: "5s"
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 1
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].enableHttp2
|
||||
value: false
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].followRedirects
|
||||
value: true
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].honorLabels
|
||||
value: true
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].interval
|
||||
value: 180s
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].path
|
||||
value: /my-metrics
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].port
|
||||
value: "8080"
|
||||
- contains:
|
||||
path: spec.podMetricsEndpoints[0].relabelings
|
||||
content:
|
||||
sourceLabels: [ container ]
|
||||
separator: ";"
|
||||
regex: "app"
|
||||
replacement: "$1"
|
||||
action: "drop"
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].scrapeTimeout
|
||||
value: 5s
|
||||
- equal:
|
||||
path: spec.podMetricsEndpoints[0].scheme
|
||||
value: http
|
177
unittests/serviceMonitors/serviceMonitor.yaml
Normal file
177
unittests/serviceMonitors/serviceMonitor.yaml
Normal file
@@ -0,0 +1,177 @@
|
||||
chart:
|
||||
appVersion: 0.1.0
|
||||
version: 0.1.0
|
||||
suite: ServiceMonitor template
|
||||
release:
|
||||
name: reposilite-unittest
|
||||
namespace: testing
|
||||
templates:
|
||||
- templates/serviceMonitor.yaml
|
||||
tests:
|
||||
- it: Skip serviceMonitor when service is disabled.
|
||||
set:
|
||||
prometheus.metrics.enabled: true
|
||||
prometheus.metrics.serviceMonitor.enabled: true
|
||||
service.enabled: false
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
- it: Skip serviceMonitor when metrics are disabled.
|
||||
set:
|
||||
prometheus.metrics.enabled: false
|
||||
prometheus.metrics.serviceMonitor.enabled: true
|
||||
services.http.enabled: true
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
- it: Skip serviceMonitor when serviceMonitor is disabled.
|
||||
set:
|
||||
prometheus.metrics.enabled: true
|
||||
prometheus.metrics.serviceMonitor.enabled: false
|
||||
services.http.enabled: true
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 0
|
||||
|
||||
- it: Rendering serviceMonitor with default values - enabled manually.
|
||||
set:
|
||||
prometheus.metrics.enabled: true
|
||||
prometheus.metrics.serviceMonitor.enabled: true
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 1
|
||||
- containsDocument:
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: ServiceMonitor
|
||||
name: reposilite-unittest
|
||||
namespace: testing
|
||||
- notExists:
|
||||
path: metadata.annotations
|
||||
- equal:
|
||||
path: metadata.labels
|
||||
value:
|
||||
app.kubernetes.io/instance: reposilite-unittest
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: reposilite
|
||||
app.kubernetes.io/version: 0.1.0
|
||||
helm.sh/chart: reposilite-0.1.0
|
||||
- isSubset:
|
||||
path: spec.endpoints[0].basicAuth
|
||||
content:
|
||||
password:
|
||||
key: password
|
||||
name: reposilite-unittest-basic-auth-credentials
|
||||
username:
|
||||
key: username
|
||||
name: reposilite-unittest-basic-auth-credentials
|
||||
- equal:
|
||||
path: spec.endpoints[0].enableHttp2
|
||||
value: true
|
||||
- equal:
|
||||
path: spec.endpoints[0].followRedirects
|
||||
value: false
|
||||
- equal:
|
||||
path: spec.endpoints[0].honorLabels
|
||||
value: false
|
||||
- equal:
|
||||
path: spec.endpoints[0].interval
|
||||
value: 60s
|
||||
- equal:
|
||||
path: spec.endpoints[0].path
|
||||
value: /metrics
|
||||
- notExists:
|
||||
path: spec.endpoints[0].relabelings
|
||||
- equal:
|
||||
path: spec.endpoints[0].scrapeTimeout
|
||||
value: 30s
|
||||
- equal:
|
||||
path: spec.endpoints[0].scheme
|
||||
value: http
|
||||
- equal:
|
||||
path: spec.endpoints[0].targetPort
|
||||
value: 8080
|
||||
- contains:
|
||||
path: spec.namespaceSelector.matchNames
|
||||
content:
|
||||
testing
|
||||
- equal:
|
||||
path: spec.selector.matchLabels
|
||||
value:
|
||||
app.kubernetes.io/instance: reposilite-unittest
|
||||
app.kubernetes.io/name: reposilite
|
||||
app.kubernetes.io/service-name: http
|
||||
|
||||
- it: Render serviceMonitor with custom annotations and labels.
|
||||
set:
|
||||
prometheus.metrics.enabled: true
|
||||
prometheus.metrics.serviceMonitor.enabled: true
|
||||
prometheus.metrics.serviceMonitor.annotations:
|
||||
foo: bar
|
||||
prometheus.metrics.serviceMonitor.labels:
|
||||
bar: foo
|
||||
asserts:
|
||||
- equal:
|
||||
path: metadata.annotations
|
||||
value:
|
||||
foo: bar
|
||||
- equal:
|
||||
path: metadata.labels
|
||||
value:
|
||||
app.kubernetes.io/instance: reposilite-unittest
|
||||
app.kubernetes.io/managed-by: Helm
|
||||
app.kubernetes.io/name: reposilite
|
||||
app.kubernetes.io/version: 0.1.0
|
||||
bar: foo
|
||||
helm.sh/chart: reposilite-0.1.0
|
||||
|
||||
- it: Change defaults
|
||||
set:
|
||||
prometheus.metrics.enabled: true
|
||||
prometheus.metrics.serviceMonitor.enabled: true
|
||||
prometheus.metrics.serviceMonitor.enableHttp2: false
|
||||
prometheus.metrics.serviceMonitor.followRedirects: true
|
||||
prometheus.metrics.serviceMonitor.honorLabels: true
|
||||
prometheus.metrics.serviceMonitor.interval: "180s"
|
||||
prometheus.metrics.serviceMonitor.path: "/my-metrics"
|
||||
prometheus.metrics.serviceMonitor.relabelings:
|
||||
- sourceLabels: [ container ]
|
||||
separator: ";"
|
||||
regex: "app"
|
||||
replacement: "$1"
|
||||
action: "drop"
|
||||
prometheus.metrics.serviceMonitor.scrapeTimeout: "5s"
|
||||
prometheus.metrics.serviceMonitor.scheme: "http"
|
||||
asserts:
|
||||
- hasDocuments:
|
||||
count: 1
|
||||
- equal:
|
||||
path: spec.endpoints[0].enableHttp2
|
||||
value: false
|
||||
- equal:
|
||||
path: spec.endpoints[0].followRedirects
|
||||
value: true
|
||||
- equal:
|
||||
path: spec.endpoints[0].honorLabels
|
||||
value: true
|
||||
- equal:
|
||||
path: spec.endpoints[0].interval
|
||||
value: 180s
|
||||
- equal:
|
||||
path: spec.endpoints[0].path
|
||||
value: /my-metrics
|
||||
- contains:
|
||||
path: spec.endpoints[0].relabelings
|
||||
content:
|
||||
sourceLabels: [ container ]
|
||||
separator: ";"
|
||||
regex: "app"
|
||||
replacement: "$1"
|
||||
action: "drop"
|
||||
- equal:
|
||||
path: spec.endpoints[0].scrapeTimeout
|
||||
value: 5s
|
||||
- equal:
|
||||
path: spec.endpoints[0].scheme
|
||||
value: http
|
@@ -24,8 +24,10 @@ tests:
|
||||
kind: Service
|
||||
name: reposilite-unittest
|
||||
namespace: testing
|
||||
- notExists:
|
||||
- equal:
|
||||
path: metadata.annotations
|
||||
value:
|
||||
app.kubernetes.io/service-name: http
|
||||
- equal:
|
||||
path: metadata.labels
|
||||
value:
|
||||
@@ -110,6 +112,7 @@ tests:
|
||||
- equal:
|
||||
path: metadata.annotations
|
||||
value:
|
||||
app.kubernetes.io/service-name: http
|
||||
foo: bar
|
||||
- equal:
|
||||
path: metadata.labels
|
||||
|
Reference in New Issue
Block a user