mirror of
https://github.com/bjw-s-labs/helm-charts.git
synced 2025-07-04 00:47:04 +02:00
feat(common): Release common v4.1.0 (#416)
This commit is contained in:
parent
f3660654f4
commit
db552e2dee
52 changed files with 705 additions and 129 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)"
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -40,6 +40,7 @@ tests:
|
|||
|
||||
- it: multiple serviceAccounts can be enabled
|
||||
set:
|
||||
controllers.main.serviceAccount.identifier: myAccount
|
||||
serviceAccount:
|
||||
myAccount: {}
|
||||
mySA: {}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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)"
|
|
@ -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
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue