mirror of
https://github.com/bjw-s-labs/helm-charts.git
synced 2025-07-03 16:37:04 +02:00
feat(common): Release version 1.3.0 (#112)
* fix(ports): Only render ports when there are ports * fix(probes): Only render probes when there are probes * feat(sidecars): Rename additionalContainers to sidecars * chore(serviceMonitor): Add labels unittest
This commit is contained in:
parent
ac5d8422e5
commit
24f8eb5a38
23 changed files with 158 additions and 106 deletions
|
@ -3,7 +3,7 @@ apiVersion: v2
|
|||
name: common
|
||||
description: Function library for Helm charts
|
||||
type: library
|
||||
version: 1.2.1
|
||||
version: 1.3.0
|
||||
kubeVersion: ">=1.22.0-0"
|
||||
keywords:
|
||||
- common
|
||||
|
@ -15,13 +15,9 @@ maintainers:
|
|||
annotations:
|
||||
artifacthub.io/changes: |-
|
||||
- kind: fixed
|
||||
description: Fixed indentation in cronjob component to allow podAnnotations
|
||||
- kind: fixed
|
||||
description: Cleaned leftover `secret` behavior under `envFrom`.
|
||||
description: Don't render ports/probes when not required
|
||||
links:
|
||||
- name: GitHub Issue
|
||||
url: https://github.com/bjw-s/helm-charts/issues/94
|
||||
url: https://github.com/bjw-s/helm-charts/issues/111
|
||||
- kind: changed
|
||||
description: Updated code-server image tag to 4.9.1
|
||||
- kind: added
|
||||
description: Allow setting `ttlSecondsAfterFinished` for CronJobs
|
||||
description: Renamed `additionalContainers` to `sidecars`. The former will however still continue to work for the time being.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# common
|
||||
|
||||
 
|
||||
 
|
||||
|
||||
Function library for Helm charts
|
||||
|
||||
|
@ -29,7 +29,7 @@ Include this chart as a dependency in your `Chart.yaml` e.g.
|
|||
# Chart.yaml
|
||||
dependencies:
|
||||
- name: common
|
||||
version: 1.2.1
|
||||
version: 1.3.0
|
||||
repository: https://bjw-s.github.io/helm-charts/
|
||||
```
|
||||
|
||||
|
@ -49,7 +49,6 @@ N/A
|
|||
|
||||
| Key | Type | Default | Description |
|
||||
|-----|------|---------|-------------|
|
||||
| additionalContainers | object | `{}` | Specify any additional containers here as dictionary items. Each additional container should have its own key. Helm templates can be used. |
|
||||
| addons | object | See below | The common chart supports several add-ons. These can be configured under this key. |
|
||||
| addons.codeserver | object | See values.yaml | The common library supports adding a code-server add-on to access files. It can be configured under this key. For more info, check out [our docs](https://bjw-s.github.io/helm-charts/docs/common-library/common-library-add-ons/##code-server) |
|
||||
| addons.codeserver.args | list | `["--auth","none"]` | Set codeserver command line arguments. Consider setting --user-data-dir to a persistent location to preserve code-server setting changes |
|
||||
|
@ -61,7 +60,7 @@ N/A
|
|||
| addons.codeserver.git.deployKeySecret | string | `""` | Existing secret containing SSH private key The chart expects it to be present under the `id_rsa` key. |
|
||||
| addons.codeserver.image.pullPolicy | string | `"IfNotPresent"` | Specify the code-server image pull policy |
|
||||
| addons.codeserver.image.repository | string | `"ghcr.io/coder/code-server"` | Specify the code-server image |
|
||||
| addons.codeserver.image.tag | string | `"4.8.3"` | Specify the code-server image tag |
|
||||
| addons.codeserver.image.tag | string | `"4.9.1"` | Specify the code-server image tag |
|
||||
| addons.codeserver.ingress.enabled | bool | `false` | Enable an ingress for the code-server add-on. |
|
||||
| addons.codeserver.ingress.ingressClassName | string | `nil` | Set the ingressClass that is used for this ingress. |
|
||||
| addons.codeserver.service.enabled | bool | `true` | Enable a service for the code-server add-on. |
|
||||
|
@ -108,6 +107,7 @@ N/A
|
|||
| controller.cronjob.schedule | string | `"*/20 * * * *"` | Sets the CronJob time when to execute your jobs |
|
||||
| controller.cronjob.startingDeadlineSeconds | int | `30` | The deadline in seconds for starting the job if it misses its scheduled time for any reason |
|
||||
| controller.cronjob.successfulJobsHistory | int | `1` | The number of succesful Jobs to keep |
|
||||
| controller.cronjob.ttlSecondsAfterFinished | string | `nil` | If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. |
|
||||
| controller.enabled | bool | `true` | enable the controller. |
|
||||
| controller.labels | object | `{}` | Set labels on the deployment/statefulset/daemonset/cronjob |
|
||||
| controller.podManagementPolicy | string | `nil` | Set statefulset podManagementPolicy, valid values are Parallel and OrderedReady (default). |
|
||||
|
@ -234,6 +234,7 @@ N/A
|
|||
| serviceMonitor.main.nameOverride | string | `nil` | Override the name suffix that is used for this serviceMonitor. |
|
||||
| serviceMonitor.main.selector | object | `{}` | Configures a custom selector for the serviceMonitor, this takes precedence over specifying a service name. Helm templates can be used. |
|
||||
| serviceMonitor.main.serviceName | string | `"{{ include \"bjw-s.common.lib.chart.names.fullname\" $ }}"` | Configures the target Service for the serviceMonitor. Helm templates can be used. |
|
||||
| sidecars | object | `{}` | Specify any sidecar containers here as dictionary items. Each sidecar container should have its own key. Helm templates can be used. |
|
||||
| termination.gracePeriodSeconds | string | `nil` | [[ref](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#lifecycle)] |
|
||||
| termination.messagePath | string | `nil` | [[ref](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#lifecycle-1)] |
|
||||
| termination.messagePolicy | string | `nil` | [[ref](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#lifecycle-1)] |
|
||||
|
|
|
@ -4,10 +4,10 @@ It will include / inject the required templates based on the given values.
|
|||
*/}}
|
||||
{{- define "bjw-s.common.addon.codeserver" -}}
|
||||
{{- if .Values.addons.codeserver.enabled -}}
|
||||
{{/* Append the code-server container to the additionalContainers */}}
|
||||
{{/* Append the code-server container to the sidecars */}}
|
||||
{{- $container := include "bjw-s.common.addon.codeserver.container" . | fromYaml -}}
|
||||
{{- if $container -}}
|
||||
{{- $_ := set .Values.additionalContainers "addon-codeserver" $container -}}
|
||||
{{- $_ := set .Values.sidecars "addon-codeserver" $container -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Include the deployKeySecret if not empty */}}
|
||||
|
|
|
@ -4,10 +4,10 @@ It will include / inject the required templates based on the given values.
|
|||
*/}}
|
||||
{{- define "bjw-s.common.addon.netshoot" -}}
|
||||
{{- if .Values.addons.netshoot.enabled -}}
|
||||
{{/* Append the netshoot container to the additionalContainers */}}
|
||||
{{/* Append the netshoot container to the sidecars */}}
|
||||
{{- $container := include "bjw-s.common.addon.netshoot.container" . | fromYaml -}}
|
||||
{{- if $container -}}
|
||||
{{- $_ := set .Values.additionalContainers "addon-netshoot" $container -}}
|
||||
{{- $_ := set .Values.sidecars "addon-netshoot" $container -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
|
@ -3,9 +3,9 @@ Template to render gluetun addon. It will add the container to the list of addit
|
|||
*/}}
|
||||
*/}}
|
||||
{{- define "bjw-s.common.addon.gluetun" -}}
|
||||
{{/* Append the gluetun container to the additionalContainers */}}
|
||||
{{/* Append the gluetun container to the sidecars */}}
|
||||
{{- $container := fromYaml (include "bjw-s.common.addon.gluetun.container" .) -}}
|
||||
{{- if $container -}}
|
||||
{{- $_ := set .Values.additionalContainers "addon-gluetun" $container -}}
|
||||
{{- $_ := set .Values.sidecars "addon-gluetun" $container -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
|
@ -2,46 +2,66 @@
|
|||
Probes selection logic.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.container.probes" -}}
|
||||
{{- $primaryService := get .Values.service (include "bjw-s.common.lib.service.primary" .) -}}
|
||||
{{- $primaryPort := "" -}}
|
||||
{{- if $primaryService -}}
|
||||
{{- $primaryPort = get $primaryService.ports (include "bjw-s.common.lib.service.primaryPort" (dict "serviceName" (include "bjw-s.common.lib.service.primary" .) "values" $primaryService)) -}}
|
||||
{{- end -}}
|
||||
{{- $primaryService := get .Values.service (include "bjw-s.common.lib.service.primary" .) -}}
|
||||
{{- $primaryPort := "" -}}
|
||||
{{- if $primaryService -}}
|
||||
{{- $primaryPort = get $primaryService.ports (include "bjw-s.common.lib.service.primaryPort" (dict "serviceName" (include "bjw-s.common.lib.service.primary" .) "values" $primaryService)) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- range $probeName, $probe := .Values.probes }}
|
||||
{{- if $probe.enabled -}}
|
||||
{{- "" | nindent 0 }}
|
||||
{{- $probeName }}Probe:
|
||||
{{- if $probe.custom -}}
|
||||
{{- $probe.spec | toYaml | nindent 2 }}
|
||||
{{- else }}
|
||||
{{- if and $primaryService $primaryPort -}}
|
||||
{{- $probeType := "" -}}
|
||||
{{- if eq $probe.type "AUTO" -}}
|
||||
{{- $probeType = $primaryPort.protocol -}}
|
||||
{{- else -}}
|
||||
{{- $probeType = $probe.type | default "TCP" -}}
|
||||
{{- end }}
|
||||
{{- if or ( eq $probeType "HTTPS" ) ( eq $probeType "HTTP" ) }}
|
||||
httpGet:
|
||||
path: {{ $probe.path }}
|
||||
scheme: {{ $probeType }}
|
||||
{{- else }}
|
||||
tcpSocket:
|
||||
{{- end }}
|
||||
{{- if $probe.port }}
|
||||
port: {{ ( tpl ( $probe.port | toString ) $ ) }}
|
||||
{{- else if $primaryPort.targetPort }}
|
||||
port: {{ $primaryPort.targetPort }}
|
||||
{{- else }}
|
||||
port: {{ $primaryPort.port }}
|
||||
{{- end }}
|
||||
initialDelaySeconds: {{ $probe.spec.initialDelaySeconds }}
|
||||
failureThreshold: {{ $probe.spec.failureThreshold }}
|
||||
timeoutSeconds: {{ $probe.spec.timeoutSeconds }}
|
||||
periodSeconds: {{ $probe.spec.periodSeconds }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- range $probeName, $probe := .Values.probes -}}
|
||||
{{- if $probe.enabled -}}
|
||||
{{- $probeOutput := "" -}}
|
||||
{{- if $probe.custom -}}
|
||||
{{- if $probe.spec -}}
|
||||
{{- $probeOutput = $probe.spec | toYaml -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- if $primaryPort -}}
|
||||
{{- $probeType := "" -}}
|
||||
{{- if eq $probe.type "AUTO" -}}
|
||||
{{- $probeType = $primaryPort.protocol -}}
|
||||
{{- else -}}
|
||||
{{- $probeType = $probe.type | default "TCP" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $probeDefinition := dict
|
||||
"initialDelaySeconds" $probe.spec.initialDelaySeconds
|
||||
"failureThreshold" $probe.spec.failureThreshold
|
||||
"timeoutSeconds" $probe.spec.timeoutSeconds
|
||||
"periodSeconds" $probe.spec.periodSeconds
|
||||
-}}
|
||||
|
||||
{{- $probeHeader := "" -}}
|
||||
{{- if or ( eq $probeType "HTTPS" ) ( eq $probeType "HTTP" ) -}}
|
||||
{{- $probeHeader = "httpGet" -}}
|
||||
|
||||
{{- $_ := set $probeDefinition $probeHeader (
|
||||
dict
|
||||
"path" $probe.path
|
||||
"scheme" $probeType
|
||||
)
|
||||
-}}
|
||||
{{- else }}
|
||||
{{- $probeHeader = "tcpSocket" -}}
|
||||
{{- $_ := set $probeDefinition $probeHeader dict -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $probe.port }}
|
||||
{{- $_ := set (index $probeDefinition $probeHeader) "port" (tpl ( $probe.port | toString ) $) -}}
|
||||
{{- else if $primaryPort.targetPort }}
|
||||
{{- $_ := set (index $probeDefinition $probeHeader) "port" $primaryPort.targetPort -}}
|
||||
{{- else }}
|
||||
{{- $_ := set (index $probeDefinition $probeHeader) "port" $primaryPort.port -}}
|
||||
{{- end }}
|
||||
|
||||
{{- $probeOutput = $probeDefinition | toYaml | trim -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $probeOutput -}}
|
||||
{{- printf "%sProbe:" $probeName | nindent 0 -}}
|
||||
{{- $probeOutput | nindent 2 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
|
@ -42,8 +42,10 @@
|
|||
envFrom:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with (include "bjw-s.common.lib.container.ports" . | trim) }}
|
||||
ports:
|
||||
{{- include "bjw-s.common.lib.container.ports" . | trim | nindent 4 }}
|
||||
{{- nindent 4 . }}
|
||||
{{- end }}
|
||||
{{- with (include "bjw-s.common.lib.container.volumeMounts" . | trim) }}
|
||||
volumeMounts:
|
||||
{{- nindent 4 . }}
|
||||
|
|
|
@ -62,8 +62,8 @@ initContainers:
|
|||
{{- end }}
|
||||
containers:
|
||||
{{- include "bjw-s.common.lib.controller.mainContainer" . | nindent 2 }}
|
||||
{{- with .Values.additionalContainers }}
|
||||
{{- $additionalContainers := list }}
|
||||
{{- with (merge .Values.sidecars .Values.additionalContainers) }}
|
||||
{{- $sidecarContainers := list }}
|
||||
{{- range $name, $container := . }}
|
||||
{{- if not $container.name -}}
|
||||
{{- $_ := set $container "name" $name }}
|
||||
|
@ -74,9 +74,9 @@ containers:
|
|||
{{- $_ := set $container "env" $newEnv.env }}
|
||||
{{- $_ := unset $.ObjectValues "envVars" -}}
|
||||
{{- end }}
|
||||
{{- $additionalContainers = append $additionalContainers $container }}
|
||||
{{- $sidecarContainers = append $sidecarContainers $container }}
|
||||
{{- end }}
|
||||
{{- tpl (toYaml $additionalContainers) $ | nindent 2 }}
|
||||
{{- tpl (toYaml $sidecarContainers) $ | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with (include "bjw-s.common.lib.controller.volumes" . | trim) }}
|
||||
volumes:
|
||||
|
|
|
@ -5,6 +5,7 @@ Merge the local chart values and the common chart defaults
|
|||
{{- if .Values.common -}}
|
||||
{{- $defaultValues := deepCopy .Values.common -}}
|
||||
{{- $userValues := deepCopy (omit .Values "common") -}}
|
||||
{{- $_ := set $defaultValues "additionalContainers" dict -}}
|
||||
{{- $mergedValues := mustMergeOverwrite $defaultValues $userValues -}}
|
||||
{{- $_ := set . "Values" (deepCopy $mergedValues) -}}
|
||||
{{- end -}}
|
||||
|
|
|
@ -192,9 +192,9 @@ lifecycle: {}
|
|||
# The dictionary item key will determine the order. Helm templates can be used.
|
||||
initContainers: {}
|
||||
|
||||
# -- Specify any additional containers here as dictionary items. Each additional container should have its own key.
|
||||
# -- Specify any sidecar containers here as dictionary items. Each sidecar container should have its own key.
|
||||
# Helm templates can be used.
|
||||
additionalContainers: {}
|
||||
sidecars: {}
|
||||
|
||||
# -- Probe configuration
|
||||
# -- [[ref]](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue