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

@ -20,8 +20,11 @@ Determine a recourse name based on Helm values
{{- end -}}
{{- if not (empty $itemCount) -}}
{{- if (gt $itemCount 1) -}}
{{- if not (hasSuffix (printf "-%s" $identifier) $objectName) -}}
{{- if or (gt $itemCount 1) ($rootContext.Values.global.alwaysAppendIdentifierToResourceName) -}}
{{- if and
(not (hasSuffix (printf "-%s" $identifier) $objectName))
(not (eq $identifier $objectName))
-}}
{{- $objectName = printf "%s-%s" $objectName $identifier -}}
{{- end -}}
{{- end -}}

View file

@ -15,4 +15,11 @@ Validate controller values
{{- if not $enabledContainers -}}
{{- fail (printf "No containers enabled for controller (%s)" $controllerValues.identifier) -}}
{{- end -}}
{{- $enabledServiceAccounts := (include "bjw-s.common.lib.serviceAccount.enabledServiceAccounts" (dict "rootContext" $rootContext) | fromYaml ) }}
{{- if not (has "serviceAccount" (keys $controllerValues)) -}}
{{- if (gt (len $enabledServiceAccounts) 1) -}}
{{- fail (printf "serviceAccount field is required because automatic Service Account detection is not possible. (controller: %s)" $controllerValues.identifier ) -}}
{{- end -}}
{{- end -}}
{{- end -}}

View file

@ -0,0 +1,22 @@
{{/*
Autodetects the service for an Ingress object
*/}}
{{- define "bjw-s.common.lib.ingress.autoDetectService" -}}
{{- $rootContext := .rootContext -}}
{{- $ingressObject := .object -}}
{{- $enabledServices := (include "bjw-s.common.lib.service.enabledServices" (dict "rootContext" $rootContext) | fromYaml ) -}}
{{- if eq 1 (len $enabledServices) -}}
{{- range $ingressObject.hosts -}}
{{- range .paths -}}
{{- if not (has "service" (keys .)) -}}
{{- $_ := set . "service" (dict "identifier" ($enabledServices | keys | first)) -}}
{{- else if and (not .service.name) (not .service.identifier) -}}
{{- $_ := set .service "identifier" ($enabledServices | keys | first) -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- $ingressObject | toYaml -}}
{{- end -}}

View file

@ -19,5 +19,11 @@ Return the enabled Ingresses.
{{- end -}}
{{- end -}}
{{- range $identifier, $objectValues := $enabledIngress -}}
{{- $object := include "bjw-s.common.lib.valuesToObject" (dict "rootContext" $rootContext "id" $identifier "values" $objectValues "itemCount" (len $enabledIngress)) | fromYaml -}}
{{- $object = include "bjw-s.common.lib.ingress.autoDetectService" (dict "rootContext" $rootContext "object" $object) | fromYaml -}}
{{- $_ := set $enabledIngress $identifier $object -}}
{{- end -}}
{{- $enabledIngress | toYaml -}}
{{- end -}}

View file

@ -5,26 +5,9 @@ Return an Ingress Object by its Identifier.
{{- $rootContext := .rootContext -}}
{{- $identifier := .id -}}
{{- $enabledServices := (include "bjw-s.common.lib.service.enabledServices" (dict "rootContext" $rootContext) | fromYaml ) -}}
{{- $enabledIngresses := (include "bjw-s.common.lib.ingress.enabledIngresses" (dict "rootContext" $rootContext) | fromYaml ) }}
{{- if (hasKey $enabledIngresses $identifier) -}}
{{- $objectValues := get $enabledIngresses $identifier -}}
{{- $object := include "bjw-s.common.lib.valuesToObject" (dict "rootContext" $rootContext "id" $identifier "values" $objectValues "itemCount" (len $enabledIngresses)) | fromYaml -}}
{{- /* Try to automatically determine the default Service identifier if needed and possible */ -}}
{{- if eq 1 (len $enabledServices) -}}
{{- range $object.hosts -}}
{{- range .paths -}}
{{- if not (has "service" (keys .)) -}}
{{- $_ := set . "service" (dict "identifier" ($enabledServices | keys | first)) -}}
{{- else if and (not .service.name) (not .service.identifier) -}}
{{- $_ := set .service "identifier" ($enabledServices | keys | first) -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- $object | toYaml -}}
{{- get $enabledIngresses $identifier | toYaml -}}
{{- end -}}
{{- end -}}

View file

@ -63,7 +63,7 @@ nodeSelector: {{ . | nindent 2 }}
affinity: {{- tpl . $rootContext | nindent 2 }}
{{- end -}}
{{- with (include "bjw-s.common.lib.pod.getOption" (dict "ctx" $ctx "option" "topologySpreadConstraints")) }}
topologySpreadConstraints: {{ . | nindent 2 }}
topologySpreadConstraints: {{- tpl . $rootContext | nindent 2 }}
{{- end -}}
{{- with (include "bjw-s.common.lib.pod.getOption" (dict "ctx" $ctx "option" "tolerations")) }}
tolerations: {{ . | nindent 2 }}

View file

@ -4,19 +4,25 @@ Returns the value for serviceAccountName
{{- define "bjw-s.common.lib.pod.field.serviceAccountName" -}}
{{- $rootContext := .ctx.rootContext -}}
{{- $controllerObject := .ctx.controllerObject -}}
{{- $enabledServiceAccounts := (include "bjw-s.common.lib.serviceAccount.enabledServiceAccounts" (dict "rootContext" $rootContext) | fromYaml ) }}
{{- $serviceAccountName := "default" -}}
{{- with $controllerObject.serviceAccount -}}
{{- if hasKey . "identifier" -}}
{{- $subject := (include "bjw-s.common.lib.serviceAccount.getByIdentifier" (dict "rootContext" $rootContext "id" .identifier) | fromYaml) -}}
{{- if not (has "serviceAccount" (keys $controllerObject)) -}}
{{- if (eq (len $enabledServiceAccounts) 1) -}}
{{- $serviceAccountName = ($enabledServiceAccounts | keys | first) -}}
{{- end -}}
{{- else -}}
{{- if hasKey $controllerObject.serviceAccount "identifier" -}}
{{- $subject := (include "bjw-s.common.lib.serviceAccount.getByIdentifier" (dict "rootContext" $rootContext "id" $controllerObject.serviceAccount.identifier) | fromYaml) -}}
{{- if not $subject }}
{{- fail (printf "No enabled ServiceAccount found with this identifier. (controller: '%s', identifier: '%s')" $controllerObject.identifier .identifier) -}}
{{- fail (printf "No enabled ServiceAccount found with this identifier. (controller: '%s', identifier: '%s')" $controllerObject.identifier $controllerObject.serviceAccount.identifier) -}}
{{- end -}}
{{- $serviceAccountName = get $subject "name" -}}
{{- else if hasKey . "name" -}}
{{- $serviceAccountName = .name -}}
{{- else if hasKey $controllerObject.serviceAccount "name" -}}
{{- $serviceAccountName = $controllerObject.serviceAccount.name -}}
{{- end -}}
{{- end -}}
{{- $serviceAccountName -}}

View file

@ -0,0 +1,21 @@
{{/*
Autodetects the service for a Route object
*/}}
{{- define "bjw-s.common.lib.route.autoDetectService" -}}
{{- $rootContext := .rootContext -}}
{{- $routeObject := .object -}}
{{- $enabledServices := (include "bjw-s.common.lib.service.enabledServices" (dict "rootContext" $rootContext) | fromYaml ) -}}
{{- if eq 1 (len $enabledServices) -}}
{{- range $routeObject.rules -}}
{{- range .backendRefs }}
{{- $backendRef := . -}}
{{- if and (empty (dig "name" nil $backendRef)) (empty (dig "identifier" nil $backendRef)) -}}
{{- $_ := set $backendRef "identifier" ($enabledServices | keys | first) -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- $routeObject | toYaml -}}
{{- end -}}

View file

@ -19,5 +19,11 @@ Return the enabled routes.
{{- end -}}
{{- end -}}
{{- range $identifier, $objectValues := $enabledRoutes -}}
{{- $object := include "bjw-s.common.lib.valuesToObject" (dict "rootContext" $rootContext "id" $identifier "values" $objectValues "itemCount" (len $enabledRoutes)) | fromYaml -}}
{{- $object = include "bjw-s.common.lib.route.autoDetectService" (dict "rootContext" $rootContext "object" $object) | fromYaml -}}
{{- $_ := set $enabledRoutes $identifier $object -}}
{{- end -}}
{{- $enabledRoutes | toYaml -}}
{{- end -}}

View file

@ -5,25 +5,9 @@ Return a Route object by its Identifier.
{{- $rootContext := .rootContext -}}
{{- $identifier := .id -}}
{{- $enabledServices := (include "bjw-s.common.lib.service.enabledServices" (dict "rootContext" $rootContext) | fromYaml ) -}}
{{- $enabledRoutes := (include "bjw-s.common.lib.route.enabledRoutes" (dict "rootContext" $rootContext) | fromYaml ) }}
{{- if (hasKey $enabledRoutes $identifier) -}}
{{- $objectValues := get $enabledRoutes $identifier -}}
{{- $object := include "bjw-s.common.lib.valuesToObject" (dict "rootContext" $rootContext "id" $identifier "values" $objectValues "itemCount" (len $enabledRoutes)) | fromYaml -}}
{{- /* Try to automatically determine the default Service identifier if needed and possible */ -}}
{{- if eq 1 (len $enabledServices) -}}
{{- range $object.rules -}}
{{- range .backendRefs }}
{{- $backendRef := . -}}
{{- if and (empty (dig "name" nil $backendRef)) (empty (dig "identifier" nil $backendRef)) -}}
{{- $_ := set $backendRef "identifier" ($enabledServices | keys | first) -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- $object | toYaml -}}
{{- get $enabledRoutes $identifier | toYaml -}}
{{- end -}}
{{- end -}}

View file

@ -0,0 +1,15 @@
{{/*
Autodetects the controller for a Service object
*/}}
{{- define "bjw-s.common.lib.service.autoDetectController" -}}
{{- $rootContext := .rootContext -}}
{{- $serviceObject := .object -}}
{{- $enabledControllers := (include "bjw-s.common.lib.controller.enabledControllers" (dict "rootContext" $rootContext) | fromYaml ) -}}
{{- if eq 1 (len $enabledControllers) -}}
{{- if (empty (dig "controller" nil $serviceObject)) -}}
{{- $_ := set $serviceObject "controller" ($enabledControllers | keys | first) -}}
{{- end -}}
{{- end -}}
{{- $serviceObject | toYaml -}}
{{- end -}}

View file

@ -5,21 +5,25 @@ Return the enabled services.
{{- $rootContext := .rootContext -}}
{{- $enabledServices := dict -}}
{{- range $name, $service := $rootContext.Values.service -}}
{{- if kindIs "map" $service -}}
{{- range $identifier, $objectValues := $rootContext.Values.service -}}
{{- if kindIs "map" $objectValues -}}
{{- /* Enable Service by default, but allow override */ -}}
{{- $serviceEnabled := true -}}
{{- if hasKey $service "enabled" -}}
{{- $serviceEnabled = $service.enabled -}}
{{- if hasKey $objectValues "enabled" -}}
{{- $serviceEnabled = $objectValues.enabled -}}
{{- end -}}
{{- if $serviceEnabled -}}
{{- $_ := set $enabledServices $name . -}}
{{- $_ := set $enabledServices $identifier $objectValues -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- range $identifier, $objectValues := $enabledServices -}}
{{- $object := include "bjw-s.common.lib.valuesToObject" (dict "rootContext" $rootContext "id" $identifier "values" $objectValues "itemCount" (len $enabledServices)) | fromYaml -}}
{{- $object = include "bjw-s.common.lib.service.autoDetectController" (dict "rootContext" $rootContext "object" $object) | fromYaml -}}
{{- $_ := set $enabledServices $identifier $object -}}
{{- end -}}
{{- $enabledServices | toYaml -}}
{{- end -}}

View file

@ -5,18 +5,8 @@ Return a service Object by its Identifier.
{{- $rootContext := .rootContext -}}
{{- $identifier := .id -}}
{{- $enabledServices := (include "bjw-s.common.lib.service.enabledServices" (dict "rootContext" $rootContext) | fromYaml ) }}
{{- $enabledControllers := (include "bjw-s.common.lib.controller.enabledControllers" (dict "rootContext" $rootContext) | fromYaml ) -}}
{{- if (hasKey $enabledServices $identifier) -}}
{{- $objectValues := get $enabledServices $identifier -}}
{{- $object := include "bjw-s.common.lib.valuesToObject" (dict "rootContext" $rootContext "id" $identifier "values" $objectValues "itemCount" (len $enabledServices)) | fromYaml -}}
{{- if eq 1 (len $enabledControllers) -}}
{{- if (empty (dig "controller" nil $object)) -}}
{{- $_ := set $object "controller" ($enabledControllers | keys | first) -}}
{{- end -}}
{{- end -}}
{{- $object | toYaml -}}
{{- get $enabledServices $identifier | toYaml -}}
{{- end -}}
{{- end -}}

View file

@ -19,5 +19,10 @@ Return the enabled serviceAccounts.
{{- end -}}
{{- end -}}
{{- range $identifier, $objectValues := $enabledServiceAccounts -}}
{{- $object := include "bjw-s.common.lib.valuesToObject" (dict "rootContext" $rootContext "id" $identifier "values" $objectValues "itemCount" (len $enabledServiceAccounts)) | fromYaml -}}
{{- $_ := set $enabledServiceAccounts $identifier $object -}}
{{- end -}}
{{- $enabledServiceAccounts | toYaml -}}
{{- end -}}

View file

@ -7,7 +7,6 @@ Return a ServiceAccount Object by its Identifier.
{{- $enabledServiceAccounts := (include "bjw-s.common.lib.serviceAccount.enabledServiceAccounts" (dict "rootContext" $rootContext) | fromYaml ) }}
{{- if (hasKey $enabledServiceAccounts $identifier) -}}
{{- $objectValues := get $enabledServiceAccounts $identifier -}}
{{- include "bjw-s.common.lib.valuesToObject" (dict "rootContext" $rootContext "id" $identifier "values" $objectValues "itemCount" (len $enabledServiceAccounts)) -}}
{{- get $enabledServiceAccounts $identifier | toYaml -}}
{{- end -}}
{{- end -}}

View file

@ -0,0 +1,21 @@
{{/*
Autodetects the service for a ServiceMonitors object
*/}}
{{- define "bjw-s.common.lib.serviceMonitor.autoDetectService" -}}
{{- $rootContext := .rootContext -}}
{{- $serviceMonitorObject := .object -}}
{{- $enabledServices := (include "bjw-s.common.lib.service.enabledServices" (dict "rootContext" $rootContext) | fromYaml ) -}}
{{- if eq 1 (len $enabledServices) -}}
{{- if and
(empty (dig "selector" nil $serviceMonitorObject))
(empty (dig "serviceName" nil $serviceMonitorObject))
(empty (dig "service" "name" nil $serviceMonitorObject))
(empty (dig "service" "identifier" nil $serviceMonitorObject))
-}}
{{- $_ := set $serviceMonitorObject "service" (dict "identifier" ($enabledServices | keys | first)) -}}
{{- end -}}
{{- end -}}
{{- $serviceMonitorObject | toYaml -}}
{{- end -}}

View file

@ -7,7 +7,7 @@ Return the enabled serviceMonitors.
{{- range $identifier, $serviceMonitor := $rootContext.Values.serviceMonitor -}}
{{- if kindIs "map" $serviceMonitor -}}
{{- /* Enable Service by default, but allow override */ -}}
{{- /* Enable serviceMonitors by default, but allow override */ -}}
{{- $serviceMonitorEnabled := true -}}
{{- if hasKey $serviceMonitor "enabled" -}}
{{- $serviceMonitorEnabled = $serviceMonitor.enabled -}}
@ -19,5 +19,11 @@ Return the enabled serviceMonitors.
{{- end -}}
{{- end -}}
{{- range $identifier, $objectValues := $enabledServiceMonitors -}}
{{- $object := include "bjw-s.common.lib.valuesToObject" (dict "rootContext" $rootContext "id" $identifier "values" $objectValues "itemCount" (len $enabledServiceMonitors)) | fromYaml -}}
{{- $object = include "bjw-s.common.lib.serviceMonitor.autoDetectService" (dict "rootContext" $rootContext "object" $object) | fromYaml -}}
{{- $_ := set $enabledServiceMonitors $identifier $object -}}
{{- end -}}
{{- $enabledServiceMonitors | toYaml -}}
{{- end -}}

View file

@ -5,6 +5,20 @@ Validate serviceMonitor values
{{- $rootContext := .rootContext -}}
{{- $serviceMonitorObject := .object -}}
{{- $enabledServices := (include "bjw-s.common.lib.service.enabledServices" (dict "rootContext" $rootContext) | fromYaml ) -}}
{{/* Verify automatic controller detection */}}
{{- if not (eq 1 (len $enabledServices)) -}}
{{- if and
(empty (dig "selector" nil $serviceMonitorObject))
(empty (dig "serviceName" nil $serviceMonitorObject))
(empty (dig "service" "name" nil $serviceMonitorObject))
(empty (dig "service" "identifier" nil $serviceMonitorObject))
-}}
{{- fail (printf "Either service.name or service.identifier is required because automatic Service detection is not possible. (serviceMonitor: %s)" $serviceMonitorObject.identifier ) -}}
{{- end -}}
{{- end -}}
{{- if not $serviceMonitorObject.endpoints -}}
{{- fail (printf "endpoints are required for serviceMonitor with key \"%v\"" $serviceMonitorObject.identifier) -}}
{{- end -}}