feat(common): Release v2.4.0 (#245)

Signed-off-by: Christopher Larivière <lariviere.c@gmail.com>
Co-authored-by: Christopher Larivière <lariviere.c@gmail.com>
Co-authored-by: Markus Reiter <me@reitermark.us>
This commit is contained in:
Bernd Schorgers 2023-12-10 09:56:08 +01:00 committed by GitHub
parent 44b1665b61
commit 3d3028b889
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
30 changed files with 364 additions and 61 deletions

View file

@ -3,7 +3,7 @@ apiVersion: v2
name: common
description: Function library for Helm charts
type: library
version: 2.3.0
version: 2.4.0
kubeVersion: ">=1.22.0-0"
keywords:
- common
@ -16,19 +16,30 @@ annotations:
artifacthub.io/changes: |-
- kind: added
description: |-
Add support for `appProtocol` in Kubernetes services.
Add support for `timeouts` in HTTPRoute.
- kind: added
description: |-
Add support for route filters for HTTPRoute and GRPCRoute.
- kind: added
description: |-
Add support `dataSource` and `dataSourceRef` fields in StatefulSet volumeClaimTemplates.
- kind: added
description: |-
Add support `dataSource` and `dataSourceRef` fields in persistentVolumeClaim persistence items.
Add support for `workingDir` for containers.
- kind: fixed
description: |-
GRPCRoute support for matches was not supported.
Defaulting image tags to chart.Appversion was removed without a proper alternative
- kind: fixed
description: |-
`valuefrom`-style environment variables can now use Helm templating again.
Using RequestRedirect is not allowed with BackendRefs in Routes.
- kind: fixed
description: |-
StatefulSet objects would not always fall back to proper defaults and error out
- kind: changed
description: |-
routes will no longer auto target its service.
It will need to be explicitly defined as below
```yaml
- backendRefs:
- group: ""
kind: Service
name: foo
namespace: foo-namespace
port: 8080
weight: 1
```

View file

@ -175,7 +175,7 @@ The following table contains an overview of available values and their descripti
| route.main.labels | object | `{}` | Provide additional labels which may be required. |
| route.main.nameOverride | string | `nil` | Override the name suffix that is used for this route. |
| route.main.parentRefs | list | `[{"group":"gateway.networking.k8s.io","kind":"Gateway","name":null,"namespace":null,"sectionName":null}]` | Configure the resource the route attaches to. |
| route.main.rules | list | `[{"backendRefs":[{"group":"","kind":"Service","name":"main","namespace":null,"port":null,"weight":1}],"filters":[],"matches":[{"path":{"type":"PathPrefix","value":"/"}}]}]` | Configure rules for routing. Defaults to the primary service. |
| route.main.rules | list | `[{"backendRefs":[{"group":"","kind":"Service","name":"main","namespace":null,"port":null,"weight":1}],"timeouts":{}"filters":[],"matches":[{"path":{"type":"PathPrefix","value":"/"}}]}]` | Configure rules for routing. Defaults to the primary service. |
| route.main.rules[0].backendRefs | list | `[{"group":"","kind":"Service","name":"main","namespace":null,"port":null,"weight":1}]` | Configure backends where matching requests should be sent. |
| secrets | object | See below | Use this to populate secrets with the values you specify. Be aware that these values are not encrypted by default, and could therefore visible to anybody with access to the values.yaml file. Additional Secrets can be added by adding a dictionary key similar to the 'secret' object. |
| secrets.secret.annotations | object | `{}` | Annotations to add to the Secret |

View file

@ -24,9 +24,6 @@ within the common library.
-}}
---
apiVersion: {{ $apiVersion }}
{{- if and (ne $routeKind "GRPCRoute") (ne $routeKind "HTTPRoute") (ne $routeKind "TCPRoute") (ne $routeKind "TLSRoute") (ne $routeKind "UDPRoute") }}
{{- fail (printf "Not a valid route kind (%s)" $routeKind) }}
{{- end }}
kind: {{ $routeKind }}
metadata:
name: {{ $routeObject.name }}
@ -79,5 +76,11 @@ spec:
{{- toYaml . | nindent 6 }}
{{- end }}
{{- end }}
{{- if (eq $routeKind "HTTPRoute") }}
{{- with .timeouts }}
timeouts:
{{- toYaml . | nindent 6 }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}

View file

@ -29,10 +29,10 @@ metadata:
spec:
revisionHistoryLimit: {{ $statefulsetObject.revisionHistoryLimit }}
replicas: {{ $statefulsetObject.replicas }}
podManagementPolicy: {{ default "OrderedReady" $statefulsetObject.statefulset.podManagementPolicy }}
podManagementPolicy: {{ dig "statefulset" "podManagementPolicy" "OrderedReady" $statefulsetObject }}
updateStrategy:
type: {{ $statefulsetObject.strategy }}
{{- if and (eq $statefulsetObject.strategy "RollingUpdate") $statefulsetObject.rollingUpdate.partition }}
{{- if and (eq $statefulsetObject.strategy "RollingUpdate") (dig "rollingUpdate" "partition" nil $statefulsetObject) }}
rollingUpdate:
partition: {{ $statefulsetObject.rollingUpdate.partition }}
{{- end }}

View file

@ -17,6 +17,9 @@ command: {{ . | trim | nindent 2 }}
{{- end -}}
{{- with (include "bjw-s.common.lib.container.field.args" (dict "ctx" $ctx) | trim) }}
args: {{ . | trim | nindent 2 }}
{{- end -}}
{{- with $containerObject.workingDir }}
workingDir: {{ . | trim }}
{{- end -}}
{{- with $containerObject.securityContext }}
securityContext: {{ toYaml . | trim | nindent 2 }}

View file

@ -8,12 +8,18 @@ Convert container values to an object
{{- $_ := set $objectValues "identifier" $identifier -}}
{{- /* Convert float64 image tags to string */ -}}
{{- /* Process image tags */ -}}
{{- if kindIs "map" $objectValues.image -}}
{{- $imageTag := dig "image" "tag" "" $objectValues -}}
{{- /* Convert float64 image tags to string */ -}}
{{- if kindIs "float64" $imageTag -}}
{{- $_ := set $objectValues.image "tag" ($imageTag | toString) -}}
{{- $imageTag = $imageTag | toString -}}
{{- end -}}
{{- /* Process any templates in the tag */ -}}
{{- $imageTag = tpl $imageTag $rootContext -}}
{{- $_ := set $objectValues.image "tag" $imageTag -}}
{{- end -}}
{{- /* Return the container object */ -}}

View file

@ -7,7 +7,7 @@ Image used by the container.
{{- $containerObject := $ctx.containerObject -}}
{{- $imageRepo := $containerObject.image.repository -}}
{{- $imageTag := default $rootContext.Chart.AppVersion $containerObject.image.tag -}}
{{- $imageTag := $containerObject.image.tag -}}
{{- if and $imageRepo $imageTag -}}
{{- printf "%s:%s" $imageRepo $imageTag -}}

View file

@ -19,7 +19,7 @@ Returns the value for containers
{{- range $key, $containerValues := $enabledContainers -}}
{{- /* Create object from the container values */ -}}
{{- $containerObject := (include "bjw-s.common.lib.container.valuesToObject" (dict "rootContext" $ "id" $key "values" $containerValues)) | fromYaml -}}
{{- $containerObject := (include "bjw-s.common.lib.container.valuesToObject" (dict "rootContext" $rootContext "id" $key "values" $containerValues)) | fromYaml -}}
{{- /* Perform validations on the Container before rendering */ -}}
{{- include "bjw-s.common.lib.container.validate" (dict "rootContext" $ "controllerObject" $controllerObject "containerObject" $containerObject) -}}

View file

@ -25,7 +25,7 @@ Returns the value for initContainers
{{- if $containerEnabled -}}
{{- /* Create object from the container values */ -}}
{{- $containerObject := (include "bjw-s.common.lib.container.valuesToObject" (dict "rootContext" $ "id" $key "values" $containerValues)) | fromYaml -}}
{{- $containerObject := (include "bjw-s.common.lib.container.valuesToObject" (dict "rootContext" $rootContext "id" $key "values" $containerValues)) | fromYaml -}}
{{- /* Perform validations on the Container before rendering */ -}}
{{- include "bjw-s.common.lib.container.validate" (dict "rootContext" $ "controllerObject" $controllerObject "containerObject" $containerObject) -}}

View file

@ -3,5 +3,23 @@ Validate Route values
*/}}
{{- define "bjw-s.common.lib.route.validate" -}}
{{- $rootContext := .rootContext -}}
{{- $routeValues := .object -}}
{{- $routeObject := .object -}}
{{/* Route Types */}}
{{- $routeKind := $routeObject.kind | default "HTTPRoute"}}
{{- if and (ne $routeKind "GRPCRoute") (ne $routeKind "HTTPRoute") (ne $routeKind "TCPRoute") (ne $routeKind "TLSRoute") (ne $routeKind "UDPRoute") }}
{{- fail (printf "Not a valid route kind (%s)" $routeKind) }}
{{- end }}
{{/* Route Rules */}}
{{- range $routeObject.rules }}
{{- if and (.filters) (.backendRefs) }}
{{- range .filters }}
{{- if eq .type "RequestRedirect" }}
{{- fail (printf "backend refs and request redirect filters cannot co-exist.")}}
{{- end }}
{{- end }}
{{- end }}
{{- end }}
{{- end -}}

View file

@ -40,7 +40,7 @@ VolumeClaimTemplates for StatefulSet
{{- /* Default to empty list */ -}}
{{- $volumeClaimTemplates := list -}}
{{- range $index, $volumeClaimTemplate := $statefulsetObject.statefulset.volumeClaimTemplates }}
{{- range $index, $volumeClaimTemplate := (dig "statefulset" "volumeClaimTemplates" list $statefulsetObject) }}
{{- $vct := include "bjw-s.common.lib.statefulset.volumeclaimtemplate" (dict "rootContext" $rootContext "values" $volumeClaimTemplate) -}}
{{- $volumeClaimTemplates = append $volumeClaimTemplates ($vct | fromYaml) -}}
{{- end -}}

View file

@ -161,7 +161,8 @@ controllers:
# - name: data
# labels: {}
# annotations: {}
# mountPath: /data
# globalMounts:
# - path: /data
# accessMode: "ReadWriteOnce"
# dataSourceRef:
# apiGroup: snapshot.storage.k8s.io
@ -171,8 +172,9 @@ controllers:
# - name: backup
# labels: {}
# annotations: {}
# mountPath: /backup
# subPath: theSubPath
# globalMounts:
# - path: /backup
# subPath: theSubPath
# accessMode: "ReadWriteOnce"
# size: 2Gi
# storageClass: cheap-storage-class
@ -207,6 +209,8 @@ controllers:
command: []
# -- Override the args for the default container
args: []
# -- Override the working directory for the default container
workingDir:
# -- Environment variables. Template enabled.
# Syntax options:
@ -589,13 +593,7 @@ route:
# -- Configure rules for routing. Defaults to the primary service.
rules:
- # -- Configure backends where matching requests should be sent.
backendRefs:
- group: ""
kind: Service
name: main
namespace:
port:
weight: 1
backendRefs: []
## Configure conditions used for matching incoming requests. Only for HTTPRoutes
matches:
- path:
@ -603,6 +601,8 @@ route:
value: /
## Request filters that are applied to the rules.
filters: []
## Request timeout that are applied to the rules.
timeouts: {}
# -- Configure persistence for the chart here.
# Additional items can be added by adding a dictionary key similar to the 'config' key.