Skip to content

Commit e53439b

Browse files
authored
Allow StartupProbe to be configured via helm (#8011)
1 parent 01d14dc commit e53439b

File tree

10 files changed

+761
-0
lines changed

10 files changed

+761
-0
lines changed

charts/nginx-ingress/templates/controller-daemonset.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,30 @@ spec:
8686
{{- if .Values.controller.readyStatus.enable }}
8787
- name: readiness-port
8888
containerPort: {{ .Values.controller.readyStatus.port }}
89+
{{- end }}
90+
{{- if .Values.controller.startupStatus.enable }}
91+
- name: startup-port
92+
containerPort: {{ .Values.controller.startupStatus.port }}
93+
{{- end }}
94+
{{- if .Values.controller.readyStatus.enable }}
8995
readinessProbe:
9096
httpGet:
9197
path: /nginx-ready
9298
port: readiness-port
9399
periodSeconds: 1
94100
initialDelaySeconds: {{ .Values.controller.readyStatus.initialDelaySeconds }}
95101
{{- end }}
102+
{{- if .Values.controller.startupStatus.enable }}
103+
startupProbe:
104+
httpGet:
105+
path: {{ .Values.controller.startupStatus.path }}
106+
port: startup-port
107+
initialDelaySeconds: {{ .Values.controller.startupStatus.initialDelaySeconds }}
108+
periodSeconds: {{ .Values.controller.startupStatus.periodSeconds }}
109+
timeoutSeconds: {{ .Values.controller.startupStatus.timeoutSeconds }}
110+
successThreshold: {{ .Values.controller.startupStatus.successThreshold }}
111+
failureThreshold: {{ .Values.controller.startupStatus.failureThreshold }}
112+
{{- end }}
96113
{{- if .Values.controller.securityContext }}
97114
securityContext:
98115
{{ toYaml .Values.controller.securityContext | indent 10 }}

charts/nginx-ingress/templates/controller-deployment.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,29 @@ spec:
9393
{{- if .Values.controller.readyStatus.enable }}
9494
- name: readiness-port
9595
containerPort: {{ .Values.controller.readyStatus.port }}
96+
{{- end }}
97+
{{- if .Values.controller.startupStatus.enable }}
98+
- name: startup-port
99+
containerPort: {{ .Values.controller.startupStatus.port }}
100+
{{- end }}
101+
{{- if .Values.controller.readyStatus.enable }}
96102
readinessProbe:
97103
httpGet:
98104
path: /nginx-ready
99105
port: readiness-port
100106
periodSeconds: 1
101107
initialDelaySeconds: {{ .Values.controller.readyStatus.initialDelaySeconds }}
108+
{{- end }}
109+
{{- if .Values.controller.startupStatus.enable }}
110+
startupProbe:
111+
httpGet:
112+
path: {{ .Values.controller.startupStatus.path }}
113+
port: startup-port
114+
initialDelaySeconds: {{ .Values.controller.startupStatus.initialDelaySeconds }}
115+
periodSeconds: {{ .Values.controller.startupStatus.periodSeconds }}
116+
timeoutSeconds: {{ .Values.controller.startupStatus.timeoutSeconds }}
117+
successThreshold: {{ .Values.controller.startupStatus.successThreshold }}
118+
failureThreshold: {{ .Values.controller.startupStatus.failureThreshold }}
102119
{{- end }}
103120
resources:
104121
{{ toYaml .Values.controller.resources | indent 10 }}

charts/nginx-ingress/values.schema.json

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1758,6 +1758,98 @@
17581758
}
17591759
]
17601760
},
1761+
"startupStatus": {
1762+
"type": "object",
1763+
"default": {},
1764+
"title": "The startupStatus",
1765+
"required": [],
1766+
"properties": {
1767+
"enable": {
1768+
"type": "boolean",
1769+
"default": false,
1770+
"title": "Enable the startup probe",
1771+
"examples": [
1772+
true
1773+
]
1774+
},
1775+
"port": {
1776+
"type": "integer",
1777+
"default": 0,
1778+
"title": "The port for the startup probe",
1779+
"examples": [
1780+
9999
1781+
]
1782+
},
1783+
"path": {
1784+
"type": "string",
1785+
"default": "",
1786+
"title": "The path for the startup probe",
1787+
"examples": [
1788+
"/"
1789+
]
1790+
},
1791+
"initialDelaySeconds": {
1792+
"type": "integer",
1793+
"default": 0,
1794+
"title": "Initial delay seconds for the startup probe",
1795+
"$ref": "https://raw.githubusercontent.com/nginxinc/kubernetes-json-schema/master/v1.33.1/_definitions.json#/definitions/io.k8s.api.core.v1.Probe/properties/initialDelaySeconds"
1796+
},
1797+
"periodSeconds": {
1798+
"type": "integer",
1799+
"default": 0,
1800+
"title": "Period seconds for the startup probe",
1801+
"$ref": "https://raw.githubusercontent.com/nginxinc/kubernetes-json-schema/master/v1.33.1/_definitions.json#/definitions/io.k8s.api.core.v1.Probe/properties/periodSeconds"
1802+
},
1803+
"timeoutSeconds": {
1804+
"type": "integer",
1805+
"default": 0,
1806+
"title": "Timeout seconds for the startup probe",
1807+
"$ref": "https://raw.githubusercontent.com/nginxinc/kubernetes-json-schema/master/v1.33.1/_definitions.json#/definitions/io.k8s.api.core.v1.Probe/properties/timeoutSeconds"
1808+
},
1809+
"successThreshold": {
1810+
"type": "integer",
1811+
"default": 0,
1812+
"title": "Success threshold for the startup probe",
1813+
"$ref": "https://raw.githubusercontent.com/nginxinc/kubernetes-json-schema/master/v1.33.1/_definitions.json#/definitions/io.k8s.api.core.v1.Probe/properties/successThreshold"
1814+
},
1815+
"failureThreshold": {
1816+
"type": "integer",
1817+
"default": 0,
1818+
"title": "Failure threshold for the startup probe",
1819+
"$ref": "https://raw.githubusercontent.com/nginxinc/kubernetes-json-schema/master/v1.33.1/_definitions.json#/definitions/io.k8s.api.core.v1.Probe/properties/failureThreshold"
1820+
}
1821+
},
1822+
"allOf": [
1823+
{
1824+
"if": {
1825+
"properties": {
1826+
"enable": {
1827+
"const": true
1828+
}
1829+
}
1830+
},
1831+
"then": {
1832+
"required": [
1833+
"enable",
1834+
"port",
1835+
"path"
1836+
]
1837+
}
1838+
}
1839+
],
1840+
"examples": [
1841+
{
1842+
"enable": true,
1843+
"port": 9999,
1844+
"path": "/",
1845+
"initialDelaySeconds": 5,
1846+
"periodSeconds": 1,
1847+
"timeoutSeconds": 1,
1848+
"successThreshold": 1,
1849+
"failureThreshold": 30
1850+
}
1851+
]
1852+
},
17611853
"enableLatencyMetrics": {
17621854
"type": "boolean",
17631855
"default": false,

charts/nginx-ingress/values.yaml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,32 @@ controller:
566566
## The number of seconds after the Ingress Controller pod has started before readiness probes are initiated.
567567
initialDelaySeconds: 0
568568

569+
startupStatus:
570+
571+
## Enable the startup probe.
572+
enable: false
573+
574+
# ## Set the port where the startup endpoint is exposed. This is a required value if startupStatus.enable is true.
575+
# port: 9999
576+
577+
# ## path to the startup endpoint. This is a required value if startupStatus.enable is true.
578+
# path: /
579+
580+
# ## The number of seconds after the Ingress Controller pod has started before startup probes are initiated.
581+
# initialDelaySeconds: 5
582+
583+
# ## The number of seconds between each startup probe.
584+
# periodSeconds: 1
585+
586+
# ## The number of seconds after which the startup probe times out.
587+
# timeoutSeconds: 1
588+
589+
# ## The number of seconds after which the startup probe is considered successful.
590+
# successThreshold: 1
591+
592+
# ## The number of seconds after which the startup probe is considered failed.
593+
# failureThreshold: 30
594+
569595
## Enable collection of latency metrics for upstreams. Requires prometheus.create.
570596
enableLatencyMetrics: false
571597

0 commit comments

Comments
 (0)