Fix probe definition overrides (#717) All checks were successful check-and-test / check-and-test (push) Successful in 38s
All checks were successful
check-and-test / check-and-test (push) Successful in 38s
### Description of the change This fixes an issue when trying to apply a custom probe that is not `tcpSocket`. ### Benefits Custom probes 🥳 ### Applicable issues - Fixes #694 ### Checklist - [x] Templating unittests are added Reviewed-on: gitea/helm-chart#717 Co-authored-by: justusbunsi <sk.bunsenbrenner@gmail.com> Co-committed-by: justusbunsi <sk.bunsenbrenner@gmail.com>
This commit was merged in pull request #717.
This commit is contained in:
@@ -408,3 +408,21 @@ https | ||||
{{ printf "gitea.admin.passwordMode must be set to one of 'keepUpdated', 'initialOnlyNoReset', or 'initialOnlyRequireReset'. Received: '%s'" .Values.gitea.admin.passwordMode | fail }} | ||||
{{- end -}} | ||||
{{- end -}} | ||||
| ||||
{{/* Create a functioning probe object for rendering. Given argument must be either a livenessProbe, readinessProbe, or startupProbe */}} | ||||
{{- define "gitea.deployment.probe" -}} | ||||
{{- $probe := unset . "enabled" -}} | ||||
{{- $probeKeys := keys $probe -}} | ||||
{{- $containsCustomMethod := false -}} | ||||
{{- $chartDefaultMethod := "tcpSocket" -}} | ||||
{{- $nonChartDefaultMethods := list "exec" "httpGet" "grpc" -}} | ||||
{{- range $probeKeys -}} | ||||
{{- if has . $nonChartDefaultMethods -}} | ||||
{{- $containsCustomMethod = true -}} | ||||
{{- end -}} | ||||
{{- end -}} | ||||
{{- if $containsCustomMethod -}} | ||||
{{- $probe = unset . $chartDefaultMethod -}} | ||||
{{- end -}} | ||||
{{- toYaml $probe -}} | ||||
{{- end -}} | ||||
| ||||
@@ -312,15 +312,15 @@ spec: | ||||
{{- end }} | ||||
{{- if .Values.gitea.livenessProbe.enabled }} | ||||
livenessProbe: | ||||
{{- toYaml (omit .Values.gitea.livenessProbe "enabled") | nindent 12 }} | ||||
{{- include "gitea.deployment.probe" .Values.gitea.livenessProbe | nindent 12 }} | ||||
{{- end }} | ||||
{{- if .Values.gitea.readinessProbe.enabled }} | ||||
readinessProbe: | ||||
{{- toYaml (omit .Values.gitea.readinessProbe "enabled") | nindent 12 }} | ||||
{{- include "gitea.deployment.probe" .Values.gitea.readinessProbe | nindent 12 }} | ||||
{{- end }} | ||||
{{- if .Values.gitea.startupProbe.enabled }} | ||||
startupProbe: | ||||
{{- toYaml (omit .Values.gitea.startupProbe "enabled") | nindent 12 }} | ||||
{{- include "gitea.deployment.probe" .Values.gitea.startupProbe | nindent 12 }} | ||||
{{- end }} | ||||
resources: | ||||
{{- toYaml .Values.resources | nindent 12 }} | ||||
| ||||
188 unittests/deployment/probes.yaml Normal file
188
unittests/deployment/probes.yaml Normal file @@ -0,0 +1,188 @@ | ||||
suite: deployment template (probes) | ||||
release: | ||||
name: gitea-unittests | ||||
namespace: testing | ||||
templates: | ||||
- templates/gitea/deployment.yaml | ||||
- templates/gitea/config.yaml | ||||
tests: | ||||
- it: renders default liveness probe | ||||
template: templates/gitea/deployment.yaml | ||||
asserts: | ||||
- notExists: | ||||
path: spec.template.spec.containers[0].livenessProbe.enabled | ||||
- isSubset: | ||||
path: spec.template.spec.containers[0].livenessProbe | ||||
content: | ||||
failureThreshold: 10 | ||||
initialDelaySeconds: 200 | ||||
periodSeconds: 10 | ||||
successThreshold: 1 | ||||
tcpSocket: | ||||
port: http | ||||
timeoutSeconds: 1 | ||||
- it: renders default readiness probe | ||||
template: templates/gitea/deployment.yaml | ||||
asserts: | ||||
- notExists: | ||||
path: spec.template.spec.containers[0].readinessProbe.enabled | ||||
- isSubset: | ||||
path: spec.template.spec.containers[0].readinessProbe | ||||
content: | ||||
failureThreshold: 3 | ||||
initialDelaySeconds: 5 | ||||
periodSeconds: 10 | ||||
successThreshold: 1 | ||||
tcpSocket: | ||||
port: http | ||||
timeoutSeconds: 1 | ||||
- it: does not render a default startup probe | ||||
template: templates/gitea/deployment.yaml | ||||
asserts: | ||||
- notExists: | ||||
path: spec.template.spec.containers[0].startupProbe | ||||
- it: allows enabling a startup probe | ||||
template: templates/gitea/deployment.yaml | ||||
set: | ||||
gitea.startupProbe.enabled: true | ||||
asserts: | ||||
- notExists: | ||||
path: spec.template.spec.containers[0].startupProbe.enabled | ||||
- isSubset: | ||||
path: spec.template.spec.containers[0].startupProbe | ||||
content: | ||||
failureThreshold: 10 | ||||
initialDelaySeconds: 60 | ||||
periodSeconds: 10 | ||||
successThreshold: 1 | ||||
tcpSocket: | ||||
port: http | ||||
timeoutSeconds: 1 | ||||
| ||||
- it: allows overwriting the default port of the liveness probe | ||||
template: templates/gitea/deployment.yaml | ||||
set: | ||||
gitea: | ||||
livenessProbe: | ||||
tcpSocket: | ||||
port: my-port | ||||
asserts: | ||||
- isSubset: | ||||
path: spec.template.spec.containers[0].livenessProbe | ||||
content: | ||||
tcpSocket: | ||||
port: my-port | ||||
| ||||
- it: allows overwriting the default port of the readiness probe | ||||
template: templates/gitea/deployment.yaml | ||||
set: | ||||
gitea: | ||||
readinessProbe: | ||||
tcpSocket: | ||||
port: my-port | ||||
asserts: | ||||
- isSubset: | ||||
path: spec.template.spec.containers[0].readinessProbe | ||||
content: | ||||
tcpSocket: | ||||
port: my-port | ||||
| ||||
- it: allows overwriting the default port of the startup probe | ||||
template: templates/gitea/deployment.yaml | ||||
set: | ||||
gitea: | ||||
startupProbe: | ||||
enabled: true | ||||
tcpSocket: | ||||
port: my-port | ||||
asserts: | ||||
- isSubset: | ||||
path: spec.template.spec.containers[0].startupProbe | ||||
content: | ||||
tcpSocket: | ||||
port: my-port | ||||
| ||||
- it: allows using a non-default method as liveness probe | ||||
template: templates/gitea/deployment.yaml | ||||
set: | ||||
gitea: | ||||
livenessProbe: | ||||
httpGet: | ||||
path: /api/healthz | ||||
port: http | ||||
initialDelaySeconds: 13371 | ||||
timeoutSeconds: 13372 | ||||
periodSeconds: 13373 | ||||
successThreshold: 13374 | ||||
failureThreshold: 13375 | ||||
asserts: | ||||
- notExists: | ||||
path: spec.template.spec.containers[0].livenessProbe.tcpSocket | ||||
- isSubset: | ||||
path: spec.template.spec.containers[0].livenessProbe | ||||
content: | ||||
failureThreshold: 13375 | ||||
initialDelaySeconds: 13371 | ||||
periodSeconds: 13373 | ||||
successThreshold: 13374 | ||||
httpGet: | ||||
path: /api/healthz | ||||
port: http | ||||
timeoutSeconds: 13372 | ||||
| ||||
- it: allows using a non-default method as readiness probe | ||||
template: templates/gitea/deployment.yaml | ||||
set: | ||||
gitea: | ||||
readinessProbe: | ||||
httpGet: | ||||
path: /api/healthz | ||||
port: http | ||||
initialDelaySeconds: 13371 | ||||
timeoutSeconds: 13372 | ||||
periodSeconds: 13373 | ||||
successThreshold: 13374 | ||||
failureThreshold: 13375 | ||||
asserts: | ||||
- notExists: | ||||
path: spec.template.spec.containers[0].readinessProbe.tcpSocket | ||||
- isSubset: | ||||
path: spec.template.spec.containers[0].readinessProbe | ||||
content: | ||||
failureThreshold: 13375 | ||||
initialDelaySeconds: 13371 | ||||
periodSeconds: 13373 | ||||
successThreshold: 13374 | ||||
httpGet: | ||||
path: /api/healthz | ||||
port: http | ||||
timeoutSeconds: 13372 | ||||
| ||||
- it: allows using a non-default method as startup probe | ||||
template: templates/gitea/deployment.yaml | ||||
set: | ||||
gitea: | ||||
startupProbe: | ||||
enabled: true | ||||
httpGet: | ||||
path: /api/healthz | ||||
port: http | ||||
initialDelaySeconds: 13371 | ||||
timeoutSeconds: 13372 | ||||
periodSeconds: 13373 | ||||
successThreshold: 13374 | ||||
failureThreshold: 13375 | ||||
asserts: | ||||
- notExists: | ||||
path: spec.template.spec.containers[0].startupProbe.tcpSocket | ||||
- isSubset: | ||||
path: spec.template.spec.containers[0].startupProbe | ||||
content: | ||||
failureThreshold: 13375 | ||||
initialDelaySeconds: 13371 | ||||
periodSeconds: 13373 | ||||
successThreshold: 13374 | ||||
httpGet: | ||||
path: /api/healthz | ||||
port: http | ||||
timeoutSeconds: 13372 | ||||
Reference in New Issue
Block a user