feat(common): Release common v4.1.0 (#416)

This commit is contained in:
Bernd Schorgers 2025-06-11 16:09:46 +02:00 committed by GitHub
parent f3660654f4
commit db552e2dee
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
52 changed files with 705 additions and 129 deletions

View file

@ -18,6 +18,16 @@ tests:
name: release-name
any: true
- it: name includes identifier when alwaysAppendIdentifierToResourceName is enabled
set:
global.alwaysAppendIdentifierToResourceName: true
asserts:
- containsDocument:
kind: ConfigMap
apiVersion: v1
name: release-name-main
any: true
- it: forceRename
set:
configMaps.main.forceRename: forceRename

View file

@ -19,6 +19,16 @@ tests:
name: release-name
any: true
- it: name includes identifier when alwaysAppendIdentifierToResourceName is enabled
set:
global.alwaysAppendIdentifierToResourceName: true
asserts:
- containsDocument:
kind: CronJob
apiVersion: batch/v1
name: release-name-main
any: true
- it: forceRename
set:
controllers.main.forceRename: forceRename

View file

@ -16,6 +16,16 @@ tests:
name: release-name
any: true
- it: name includes identifier when alwaysAppendIdentifierToResourceName is enabled
set:
global.alwaysAppendIdentifierToResourceName: true
asserts:
- containsDocument:
kind: DaemonSet
apiVersion: apps/v1
name: release-name-main
any: true
- it: forceRename
set:
controllers.main.forceRename: forceRename

View file

@ -14,6 +14,16 @@ tests:
name: release-name
any: true
- it: name includes identifier when alwaysAppendIdentifierToResourceName is enabled
set:
global.alwaysAppendIdentifierToResourceName: true
asserts:
- containsDocument:
kind: Deployment
apiVersion: apps/v1
name: release-name-main
any: true
- it: forceRename
set:
controllers.main.forceRename: forceRename

View file

@ -16,6 +16,16 @@ tests:
name: release-name
any: true
- it: name includes identifier when alwaysAppendIdentifierToResourceName is enabled
set:
global.alwaysAppendIdentifierToResourceName: true
asserts:
- containsDocument:
kind: Ingress
apiVersion: networking.k8s.io/v1
name: release-name-main
any: true
- it: forceRename
set:
ingress.main.forceRename: forceRename

View file

@ -16,6 +16,16 @@ tests:
name: release-name
any: true
- it: name includes identifier when alwaysAppendIdentifierToResourceName is enabled
set:
global.alwaysAppendIdentifierToResourceName: true
asserts:
- containsDocument:
kind: Job
apiVersion: batch/v1
name: release-name-main
any: true
- it: forceRename
set:
controllers.main.forceRename: forceRename

View file

@ -21,6 +21,16 @@ tests:
name: release-name
any: true
- it: name includes identifier when alwaysAppendIdentifierToResourceName is enabled
set:
global.alwaysAppendIdentifierToResourceName: true
asserts:
- containsDocument:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
name: release-name-main
any: true
- it: forceRename
set:
networkpolicies.main.forceRename: forceRename

View file

@ -54,3 +54,15 @@ tests:
- equal:
path: spec.template.spec.serviceAccountName
value: mySA3
- it: with automatic serviceAccount detection should pass
set:
serviceAccount:
mySA: {}
documentSelector:
path: $[?(@.kind == "Deployment")].metadata.name
value: release-name
asserts:
- equal:
path: spec.template.spec.serviceAccountName
value: mySA

View file

@ -72,3 +72,29 @@ tests:
labelSelector:
matchLabels:
app: foo
- it: topologySpreadConstraints with template should pass
set:
controllers:
main:
pod:
topologySpreadConstraints:
- maxSkew: 2
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
app: "{{ .Release.Name }}"
documentSelector:
path: $[?(@.kind == "Deployment")].metadata.name
value: release-name
asserts:
- equal:
path: spec.template.spec.topologySpreadConstraints
value:
- maxSkew: 2
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
app: RELEASE-NAME

View file

@ -0,0 +1,16 @@
---
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
suite: service - validations
templates:
- common.yaml
values:
- ../_values/controllers_main_default_container.yaml
tests:
- it: automatic Service Account determination should fail when >1 Service Account is enabled
set:
serviceAccount:
mySA: {}
mySA2: {}
asserts:
- failedTemplate:
errorMessage: "serviceAccount field is required because automatic Service Account detection is not possible. (controller: main)"

View file

@ -19,6 +19,16 @@ tests:
name: release-name
any: true
- it: name includes identifier when alwaysAppendIdentifierToResourceName is enabled
set:
global.alwaysAppendIdentifierToResourceName: true
asserts:
- containsDocument:
kind: PersistentVolumeClaim
apiVersion: v1
name: release-name-main
any: true
- it: forceRename
set:
persistence.main.forceRename: forceRename

View file

@ -20,6 +20,16 @@ tests:
name: release-name
any: true
- it: name includes identifier when alwaysAppendIdentifierToResourceName is enabled
set:
global.alwaysAppendIdentifierToResourceName: true
asserts:
- containsDocument:
kind: Endpoint
apiVersion: v1
name: release-name-main
any: true
- it: forceRename
set:
rawResources.main.forceRename: forceRename

View file

@ -19,6 +19,16 @@ tests:
name: release-name
any: true
- it: name includes identifier when alwaysAppendIdentifierToResourceName is enabled
set:
global.alwaysAppendIdentifierToResourceName: true
asserts:
- containsDocument:
kind: HTTPRoute
apiVersion: gateway.networking.k8s.io/v1alpha2
name: release-name-main
any: true
- it: forceRename
set:
route.main.forceRename: forceRename

View file

@ -18,6 +18,16 @@ tests:
name: release-name
any: true
- it: name includes identifier when alwaysAppendIdentifierToResourceName is enabled
set:
global.alwaysAppendIdentifierToResourceName: true
asserts:
- containsDocument:
kind: Secret
apiVersion: v1
name: release-name-main
any: true
- it: forceRename
set:
secrets.main.forceRename: forceRename

View file

@ -15,6 +15,16 @@ tests:
name: release-name
any: true
- it: name includes identifier when alwaysAppendIdentifierToResourceName is enabled
set:
global.alwaysAppendIdentifierToResourceName: true
asserts:
- containsDocument:
kind: Service
apiVersion: v1
name: release-name-main
any: true
- it: forceRename
set:
service.main.forceRename: forceRename

View file

@ -16,6 +16,16 @@ tests:
name: release-name
any: true
- it: name includes identifier when alwaysAppendIdentifierToResourceName is enabled
set:
global.alwaysAppendIdentifierToResourceName: true
asserts:
- containsDocument:
kind: ServiceAccount
apiVersion: v1
name: release-name-main
any: true
- it: forceRename
set:
serviceAccount.main.forceRename: forceRename
@ -98,6 +108,7 @@ tests:
- it: multiple items
set:
controllers.main.serviceAccount.identifier: main
serviceAccount.second: {}
asserts:
- containsDocument:
@ -113,6 +124,7 @@ tests:
- it: multiple items with prefix
set:
controllers.main.serviceAccount.identifier: main
serviceAccount.second:
prefix: prefix
asserts:
@ -129,6 +141,7 @@ tests:
- it: multiple items with suffix
set:
controllers.main.serviceAccount.identifier: main
serviceAccount.second:
suffix: suffix
asserts:
@ -145,6 +158,7 @@ tests:
- it: multiple items with prefix and suffix
set:
controllers.main.serviceAccount.identifier: main
serviceAccount.second:
prefix: prefix
suffix: suffix
@ -162,6 +176,7 @@ tests:
- it: multiple items with prefix, suffix and forceRename (illegal combination)
set:
controllers.main.serviceAccount.identifier: main
serviceAccount.second:
forceRename: forceRename
prefix: prefix

View file

@ -40,6 +40,7 @@ tests:
- it: multiple serviceAccounts can be enabled
set:
controllers.main.serviceAccount.identifier: myAccount
serviceAccount:
myAccount: {}
mySA: {}

View file

@ -29,3 +29,26 @@ tests:
matchExpressions:
- key: k8s-app
operator: Exists
- it: selector can determine default service automatically
values:
- ../_values/service_main_default.yaml
set:
serviceMonitor:
main:
endpoints:
- port: http
scheme: http
path: /metrics
interval: 1m
scrapeTimeout: 10s
documentSelector:
path: $[?(@.kind == "ServiceMonitor")].metadata.name
value: release-name
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

View file

@ -0,0 +1,55 @@
---
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
suite: serviceMonitor - fields - service
templates:
- common.yaml
values:
- ../_values/controllers_main_default_container.yaml
tests:
- it: a templated service name can be configured
set:
serviceMonitor:
main:
service:
name: "{{ .Release.Name }}"
endpoints:
- port: http
scheme: http
path: /metrics
interval: 1m
scrapeTimeout: 10s
documentSelector:
path: $[?(@.kind == "ServiceMonitor")].metadata.name
value: release-name
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 service identifier can be configured
values:
- ../_values/service_main_default.yaml
set:
serviceMonitor:
main:
service:
identifier: main
endpoints:
- port: http
scheme: http
path: /metrics
interval: 1m
scrapeTimeout: 10s
documentSelector:
path: $[?(@.kind == "ServiceMonitor")].metadata.name
value: release-name
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

View file

@ -23,6 +23,16 @@ tests:
name: release-name
any: true
- it: name includes identifier when alwaysAppendIdentifierToResourceName is enabled
set:
global.alwaysAppendIdentifierToResourceName: true
asserts:
- containsDocument:
kind: ServiceMonitor
apiVersion: monitoring.coreos.com/v1
name: release-name-main
any: true
- it: forceRename
set:
serviceMonitor.main.forceRename: forceRename

View file

@ -0,0 +1,62 @@
---
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
suite: serviceMonitor - validations
templates:
- common.yaml
values:
- ../_values/controllers_main_default_container.yaml
tests:
- it: service reference to non-existing service identifier should fail
set:
serviceMonitor:
main:
service:
identifier: main
endpoints:
- port: http
scheme: http
path: /metrics
interval: 1m
scrapeTimeout: 10s
asserts:
- failedTemplate:
errorMessage: "No enabled Service found with this identifier. (serviceMonitor: 'main', identifier: 'main')"
- it: automatic service determination should fail when no service is enabled
set:
serviceMonitor:
main:
endpoints:
- port: http
scheme: http
path: /metrics
interval: 1m
scrapeTimeout: 10s
asserts:
- failedTemplate:
errorMessage: "Either service.name or service.identifier is required because automatic Service detection is not possible. (serviceMonitor: main)"
- it: automatic service determination should fail when >1 service is enabled
set:
service:
main:
controller: main
ports:
ui:
port: 8082
second:
controller: main
ports:
ui:
port: 8082
serviceMonitor:
main:
endpoints:
- port: http
scheme: http
path: /metrics
interval: 1m
scrapeTimeout: 10s
asserts:
- failedTemplate:
errorMessage: "Either service.name or service.identifier is required because automatic Service detection is not possible. (serviceMonitor: main)"

View file

@ -0,0 +1,70 @@
---
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
suite: statefulset - fields - serviceName
templates:
- common.yaml
values:
- ../_values/controllers_main_default_container.yaml
set:
controllers.main.type: statefulset
tests:
- it: default should pass
documentSelector:
path: $[?(@.kind == "StatefulSet")].metadata.name
value: release-name
asserts:
- equal:
path: spec.serviceName
value: RELEASE-NAME
- it: custom serviceName
set:
controllers.main.statefulset:
serviceName: test
documentSelector:
path: $[?(@.kind == "StatefulSet")].metadata.name
value: release-name
asserts:
- equal:
path: spec.serviceName
value: test
- it: custom serviceName with template
set:
controllers.main.statefulset:
serviceName: "{{ .Release.Name | lower }}"
service:
main:
controller: main
ports:
http:
port: 8081
documentSelector:
path: $[?(@.kind == "StatefulSet")].metadata.name
value: release-name
asserts:
- equal:
path: spec.serviceName
value: release-name
- it: serviceName with identifier
set:
controllers.main.statefulset:
serviceName:
identifier: headless
service:
main:
ports:
http:
port: 8081
headless:
ports:
http:
port: 8081
documentSelector:
path: $[?(@.kind == "StatefulSet")].metadata.name
value: release-name
asserts:
- equal:
path: spec.serviceName
value: release-name-headless

View file

@ -16,6 +16,16 @@ tests:
name: release-name
any: true
- it: name includes identifier when alwaysAppendIdentifierToResourceName is enabled
set:
global.alwaysAppendIdentifierToResourceName: true
asserts:
- containsDocument:
kind: StatefulSet
apiVersion: apps/v1
name: release-name-main
any: true
- it: forceRename
set:
controllers.main.forceRename: forceRename