mirror of
https://github.com/bjw-s-labs/helm-charts.git
synced 2025-07-03 08:37:03 +02:00
Signed-off-by: solidDoWant <fred.heinecke@yahoo.com> Co-authored-by: Patrick Collins <Patricol@users.noreply.github.com> Co-authored-by: Patrick Collins <patrick.collins@gainbridge.io> Co-authored-by: Lawrence Gil <larrywtf609@gmail.com> Co-authored-by: solidDoWant <fred.heinecke@yahoo.com>
218 lines
6.1 KiB
YAML
218 lines
6.1 KiB
YAML
---
|
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
|
|
suite: serviceMonitor values
|
|
templates:
|
|
- common.yaml
|
|
values:
|
|
- ../_values/controllers_main_default_container.yaml
|
|
tests:
|
|
- it: a serviceMonitor is not created by default
|
|
asserts:
|
|
- not: true
|
|
containsDocument:
|
|
kind: ServiceMonitor
|
|
apiVersion: monitoring.coreos.com/v1
|
|
name: RELEASE-NAME
|
|
|
|
- it: a serviceMonitor is not created when disabled
|
|
set:
|
|
serviceMonitor:
|
|
main:
|
|
enabled: false
|
|
serviceName: "{{ .Release.Name }}"
|
|
asserts:
|
|
- not: true
|
|
containsDocument:
|
|
kind: ServiceMonitor
|
|
apiVersion: monitoring.coreos.com/v1
|
|
name: RELEASE-NAME
|
|
|
|
- it: a serviceMonitor can be configured
|
|
set:
|
|
serviceMonitor:
|
|
main:
|
|
labels:
|
|
test.label: testvalue
|
|
serviceName: "{{ .Release.Name }}"
|
|
endpoints:
|
|
- port: http
|
|
scheme: http
|
|
path: /metrics
|
|
interval: 1m
|
|
scrapeTimeout: 10s
|
|
documentSelector: &ServiceMonitorSelector
|
|
path: $[?(@.kind == "ServiceMonitor")].metadata.name
|
|
value: RELEASE-NAME
|
|
asserts:
|
|
- equal:
|
|
path: spec.namespaceSelector
|
|
value:
|
|
matchNames:
|
|
- NAMESPACE
|
|
- equal:
|
|
path: spec.jobLabel
|
|
value: RELEASE-NAME
|
|
- equal:
|
|
path: spec.selector.matchLabels
|
|
value:
|
|
app.kubernetes.io/instance: RELEASE-NAME
|
|
app.kubernetes.io/name: RELEASE-NAME
|
|
app.kubernetes.io/service: RELEASE-NAME
|
|
- equal:
|
|
path: spec.endpoints
|
|
value:
|
|
- port: http
|
|
scheme: http
|
|
path: /metrics
|
|
interval: 1m
|
|
scrapeTimeout: 10s
|
|
- equal:
|
|
path: metadata.labels
|
|
value:
|
|
app.kubernetes.io/instance: RELEASE-NAME
|
|
app.kubernetes.io/managed-by: Helm
|
|
app.kubernetes.io/name: RELEASE-NAME
|
|
helm.sh/chart: common-test-1.0.0
|
|
test.label: testvalue
|
|
|
|
- it: a serviceMonitor can be created with a nameOverride
|
|
set:
|
|
serviceMonitor:
|
|
main:
|
|
nameOverride: test
|
|
serviceName: "{{ .Release.Name }}"
|
|
endpoints:
|
|
- port: http
|
|
scheme: http
|
|
path: /metrics
|
|
interval: 1m
|
|
scrapeTimeout: 10s
|
|
documentSelector:
|
|
path: $[?(@.kind == "ServiceMonitor")].metadata.name
|
|
value: RELEASE-NAME-test
|
|
asserts:
|
|
- equal:
|
|
path: spec.selector.matchLabels
|
|
value:
|
|
app.kubernetes.io/instance: RELEASE-NAME
|
|
app.kubernetes.io/name: RELEASE-NAME
|
|
app.kubernetes.io/service: RELEASE-NAME
|
|
|
|
- it: a templated service can be configured
|
|
set:
|
|
serviceMonitor:
|
|
main:
|
|
serviceName: "{{ .Release.Name }}"
|
|
endpoints:
|
|
- port: http
|
|
scheme: http
|
|
path: /metrics
|
|
interval: 1m
|
|
scrapeTimeout: 10s
|
|
documentSelector: *ServiceMonitorSelector
|
|
asserts:
|
|
- equal:
|
|
path: spec.selector.matchLabels
|
|
value:
|
|
app.kubernetes.io/instance: RELEASE-NAME
|
|
app.kubernetes.io/name: RELEASE-NAME
|
|
app.kubernetes.io/service: RELEASE-NAME
|
|
|
|
- it: a custom selector can be configured
|
|
set:
|
|
serviceMonitor:
|
|
main:
|
|
selector:
|
|
matchExpressions:
|
|
- {key: k8s-app, operator: Exists}
|
|
endpoints:
|
|
- port: http
|
|
scheme: http
|
|
path: /metrics
|
|
interval: 1m
|
|
scrapeTimeout: 10s
|
|
documentSelector: *ServiceMonitorSelector
|
|
asserts:
|
|
- equal:
|
|
path: spec.selector
|
|
value:
|
|
matchExpressions:
|
|
- key: k8s-app
|
|
operator: Exists
|
|
|
|
- it: targetLabels can be configured
|
|
set:
|
|
serviceMonitor:
|
|
main:
|
|
enabled: true
|
|
serviceName: "{{ .Release.Name }}"
|
|
endpoints:
|
|
- port: http
|
|
scheme: http
|
|
path: /metrics
|
|
interval: 1m
|
|
scrapeTimeout: 10s
|
|
targetLabels:
|
|
- testlabel1
|
|
- testlabel2
|
|
documentSelector: *ServiceMonitorSelector
|
|
asserts:
|
|
- equal:
|
|
path: spec.selector.matchLabels
|
|
value:
|
|
app.kubernetes.io/instance: RELEASE-NAME
|
|
app.kubernetes.io/name: RELEASE-NAME
|
|
app.kubernetes.io/service: RELEASE-NAME
|
|
- equal:
|
|
path: spec.endpoints
|
|
value:
|
|
- port: http
|
|
scheme: http
|
|
path: /metrics
|
|
interval: 1m
|
|
scrapeTimeout: 10s
|
|
- equal:
|
|
path: spec.targetLabels
|
|
value:
|
|
- testlabel1
|
|
- testlabel2
|
|
|
|
- it: a serviceMonitor can be configured with templated endpoints
|
|
set:
|
|
serviceMonitor:
|
|
main:
|
|
labels:
|
|
test.label: testvalue
|
|
serviceName: "{{ .Release.Name }}"
|
|
endpoints:
|
|
- port: http
|
|
scheme: http
|
|
path: /metrics
|
|
interval: 1m
|
|
scrapeTimeout: 10s
|
|
basicAuth:
|
|
username:
|
|
name: "{{.Release.Name}}-secret"
|
|
key: USERNAME
|
|
password:
|
|
name: "{{.Release.Name}}-secret"
|
|
key: PASSWORD
|
|
documentSelector: &ServiceMonitorSelector
|
|
path: $[?(@.kind == "ServiceMonitor")].metadata.name
|
|
value: RELEASE-NAME
|
|
asserts:
|
|
- equal:
|
|
path: spec.endpoints
|
|
value:
|
|
- port: http
|
|
scheme: http
|
|
path: /metrics
|
|
interval: 1m
|
|
scrapeTimeout: 10s
|
|
basicAuth:
|
|
username:
|
|
name: RELEASE-NAME-secret
|
|
key: USERNAME
|
|
password:
|
|
name: RELEASE-NAME-secret
|
|
key: PASSWORD
|