This is an automated email from the ASF dual-hosted git repository.
nferraro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git
The following commit(s) were added to refs/heads/master by this push:
new 1220ed6 Add option to health probes #525
1220ed6 is described below
commit 1220ed67cd667fbd73298eeeade82c03e9b3ff1b
Author: lburgazzoli <[email protected]>
AuthorDate: Wed Mar 6 13:45:51 2019 +0100
Add option to health probes #525
---
pkg/trait/probes.go | 55 ++++++++++++++++++++++++++++++++++++++++--------
pkg/trait/probes_test.go | 5 ++++-
2 files changed, 50 insertions(+), 10 deletions(-)
diff --git a/pkg/trait/probes.go b/pkg/trait/probes.go
index fbc0e33..2ece7bb 100644
--- a/pkg/trait/probes.go
+++ b/pkg/trait/probes.go
@@ -32,9 +32,19 @@ import (
type probesTrait struct {
BaseTrait `property:",squash"`
- BindHost string `property:"bind-host"`
- BindPort int `property:"bind-port"`
- Path string `property:"path"`
+ BindHost string `property:"bind-host"`
+ BindPort int `property:"bind-port"`
+ Path string `property:"path"`
+ LivenessInitialDelay int32 `property:"liveness-initial-delay"`
+ LivenessTimeout int32 `property:"liveness-timeout"`
+ LivenessPeriod int32 `property:"liveness-period"`
+ LivenessSuccessThreshold int32 `property:"liveness-success-threshold"`
+ LivenessFailureThreshold int32 `property:"liveness-failure-threshold"`
+ ReadinessInitialDelay int32 `property:"readiness-initial-delay"`
+ ReadinessTimeout int32 `property:"readiness-timeout"`
+ ReadinessPeriod int32 `property:"readiness-period"`
+ ReadinessSuccessThreshold int32
`property:"readiness-success-threshold"`
+ ReadinessFailureThreshold int32
`property:"readiness-failure-threshold"`
}
func newProbesTrait() *probesTrait {
@@ -68,21 +78,21 @@ func (t *probesTrait) Apply(e *Environment) error {
return
}
-
deployment.Spec.Template.Spec.Containers[0].LivenessProbe = t.newProbe()
-
deployment.Spec.Template.Spec.Containers[0].ReadinessProbe = t.newProbe()
+
deployment.Spec.Template.Spec.Containers[0].LivenessProbe = t.newLivenessProbe()
+
deployment.Spec.Template.Spec.Containers[0].ReadinessProbe =
t.newReadinessProbe()
})
e.Resources.VisitKnativeService(func(service *serving.Service) {
-
service.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.LivenessProbe
= t.newProbe()
-
service.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.ReadinessProbe
= t.newProbe()
+
service.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.LivenessProbe
= t.newLivenessProbe()
+
service.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.ReadinessProbe
= t.newReadinessProbe()
})
}
return nil
}
-func (t *probesTrait) newProbe() *corev1.Probe {
- return &corev1.Probe{
+func (t *probesTrait) newLivenessProbe() *corev1.Probe {
+ p := corev1.Probe{
Handler: corev1.Handler{
HTTPGet: &corev1.HTTPGetAction{
Port: intstr.FromInt(t.BindPort),
@@ -90,4 +100,31 @@ func (t *probesTrait) newProbe() *corev1.Probe {
},
},
}
+
+ p.InitialDelaySeconds = t.LivenessInitialDelay
+ p.TimeoutSeconds = t.LivenessTimeout
+ p.PeriodSeconds = t.LivenessPeriod
+ p.SuccessThreshold = t.LivenessSuccessThreshold
+ p.FailureThreshold = t.LivenessFailureThreshold
+
+ return &p
+}
+
+func (t *probesTrait) newReadinessProbe() *corev1.Probe {
+ p := corev1.Probe{
+ Handler: corev1.Handler{
+ HTTPGet: &corev1.HTTPGetAction{
+ Port: intstr.FromInt(t.BindPort),
+ Path: t.Path,
+ },
+ },
+ }
+
+ p.InitialDelaySeconds = t.ReadinessInitialDelay
+ p.TimeoutSeconds = t.ReadinessTimeout
+ p.PeriodSeconds = t.ReadinessPeriod
+ p.SuccessThreshold = t.ReadinessSuccessThreshold
+ p.FailureThreshold = t.ReadinessFailureThreshold
+
+ return &p
}
diff --git a/pkg/trait/probes_test.go b/pkg/trait/probes_test.go
index 88a2a45..8250de9 100644
--- a/pkg/trait/probes_test.go
+++ b/pkg/trait/probes_test.go
@@ -81,6 +81,7 @@ func TestProbesOnDeployment(t *testing.T) {
tr := newProbesTrait()
tr.Enabled = &enabled
tr.BindPort = 9191
+ tr.LivenessTimeout = 1234
ok, err := tr.Configure(&e)
assert.Nil(t, err)
@@ -88,13 +89,13 @@ func TestProbesOnDeployment(t *testing.T) {
err = tr.Apply(&e)
assert.Nil(t, err)
- //assert.Contains(t, e.Integration.Status.Dependencies,
"runtime:health")
assert.Equal(t, "",
target.Spec.Template.Spec.Containers[0].LivenessProbe.HTTPGet.Host)
assert.Equal(t, int32(9191),
target.Spec.Template.Spec.Containers[0].LivenessProbe.HTTPGet.Port.IntVal)
assert.Equal(t, "/health",
target.Spec.Template.Spec.Containers[0].LivenessProbe.HTTPGet.Path)
assert.Equal(t, "",
target.Spec.Template.Spec.Containers[0].ReadinessProbe.HTTPGet.Host)
assert.Equal(t, int32(9191),
target.Spec.Template.Spec.Containers[0].ReadinessProbe.HTTPGet.Port.IntVal)
assert.Equal(t, "/health",
target.Spec.Template.Spec.Containers[0].ReadinessProbe.HTTPGet.Path)
+ assert.Equal(t, int32(1234),
target.Spec.Template.Spec.Containers[0].LivenessProbe.TimeoutSeconds)
}
func TestProbesOnKnativeService(t *testing.T) {
@@ -118,6 +119,7 @@ func TestProbesOnKnativeService(t *testing.T) {
tr := newProbesTrait()
tr.Enabled = &enabled
tr.BindPort = 9191
+ tr.ReadinessTimeout = 4321
ok, err := tr.Configure(&e)
assert.Nil(t, err)
@@ -131,4 +133,5 @@ func TestProbesOnKnativeService(t *testing.T) {
assert.Equal(t, "",
target.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.ReadinessProbe.HTTPGet.Host)
assert.Equal(t, int32(9191),
target.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.ReadinessProbe.HTTPGet.Port.IntVal)
assert.Equal(t, "/health",
target.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.ReadinessProbe.HTTPGet.Path)
+ assert.Equal(t, int32(4321),
target.Spec.RunLatest.Configuration.RevisionTemplate.Spec.Container.ReadinessProbe.TimeoutSeconds)
}