/
probe.go
52 lines (46 loc) · 1.77 KB
/
probe.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package pod
import (
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/util/intstr"
)
// StartupProbe returns a startup probe.
func StartupProbe(startupProbeFailureSeconds *int32, port int32, path string) *corev1.Probe {
var defaultFailureThreshold int32 = 60
var defaultPeriodSeconds int32 = 5
return completeProbe(startupProbeFailureSeconds, defaultFailureThreshold, defaultPeriodSeconds, getProbe(port, path))
}
// LivenessProbe returns a liveness probe.
func LivenessProbe(livenessProbeFailureSeconds *int32, port int32, path string) *corev1.Probe {
var defaultFailureThreshold int32 = 3
var defaultPeriodSeconds int32 = 5
return completeProbe(livenessProbeFailureSeconds, defaultFailureThreshold, defaultPeriodSeconds, getProbe(port, path))
}
// ReadinessProbe returns a readiness probe.
func ReadinessProbe(readinessProbeFailureSeconds *int32, port int32, path string) *corev1.Probe {
var defaultFailureThreshold int32 = 3
var defaultPeriodSeconds int32 = 5
return completeProbe(readinessProbeFailureSeconds, defaultFailureThreshold, defaultPeriodSeconds, getProbe(port, path))
}
func completeProbe(failureSeconds *int32, defaultFailureThreshold int32, defaultPeriodSeconds int32,
probeHandler corev1.ProbeHandler) *corev1.Probe {
probe := &corev1.Probe{}
if failureSeconds != nil && *failureSeconds > 0 {
probe.FailureThreshold = (*failureSeconds + defaultPeriodSeconds - 1) / defaultPeriodSeconds
} else {
probe.FailureThreshold = defaultFailureThreshold
}
probe.PeriodSeconds = defaultPeriodSeconds
probe.ProbeHandler = probeHandler
return probe
}
func getProbe(port int32, path string) corev1.ProbeHandler {
return corev1.ProbeHandler{
HTTPGet: &corev1.HTTPGetAction{
Path: path,
Port: intstr.IntOrString{
Type: intstr.Int,
IntVal: port,
},
},
}
}