From a51f7488284701c3e6d979534f62cd738b8de5c4 Mon Sep 17 00:00:00 2001 From: Brendan Shephard Date: Tue, 11 Feb 2025 15:24:58 +1100 Subject: [PATCH] Tidy up deployment probes This change moves the *probes into their own functions. This makes the deployment code easier to write functional tests for. Signed-off-by: Brendan Shephard --- pkg/horizon/deployment.go | 92 +++++++++++++++++++++++---------------- 1 file changed, 54 insertions(+), 38 deletions(-) diff --git a/pkg/horizon/deployment.go b/pkg/horizon/deployment.go index 11f0061..e086eb2 100644 --- a/pkg/horizon/deployment.go +++ b/pkg/horizon/deployment.go @@ -30,7 +30,9 @@ import ( const ( // ServiceCommand is the command used to run Kolla and launch the initial Apache process - ServiceCommand = "/usr/local/bin/kolla_start" + ServiceCommand = "/usr/local/bin/kolla_start" + horizonDashboardURL = "/dashboard/auth/login/?next=/dashboard/" + horizonContainerPortName = "horizon" ) // Deployment creates the k8s deployment structure required to run Horizon @@ -47,47 +49,11 @@ func Deployment( args := []string{"-c", ServiceCommand} containerPort := corev1.ContainerPort{ - Name: "horizon", + Name: horizonContainerPortName, Protocol: corev1.ProtocolTCP, ContainerPort: HorizonPort, } - livenessProbe := &corev1.Probe{ - TimeoutSeconds: 5, - PeriodSeconds: 10, - InitialDelaySeconds: 10, - ProbeHandler: corev1.ProbeHandler{ - HTTPGet: &corev1.HTTPGetAction{ - Path: "/dashboard/auth/login/?next=/dashboard/", - Port: intstr.FromString("horizon"), - }, - }, - } - readinessProbe := &corev1.Probe{ - TimeoutSeconds: 5, - PeriodSeconds: 10, - InitialDelaySeconds: 10, - ProbeHandler: corev1.ProbeHandler{ - HTTPGet: &corev1.HTTPGetAction{ - Path: "/dashboard/auth/login/?next=/dashboard/", - Port: intstr.FromString("horizon"), - }, - }, - } - - startupProbe := &corev1.Probe{ - TimeoutSeconds: 5, - PeriodSeconds: 10, - FailureThreshold: 30, - InitialDelaySeconds: 10, - ProbeHandler: corev1.ProbeHandler{ - HTTPGet: &corev1.HTTPGetAction{ - Path: "/dashboard/auth/login/?next=/dashboard/", - Port: intstr.FromString("horizon"), - }, - }, - } - envVars := map[string]env.Setter{} envVars["KOLLA_CONFIG_STRATEGY"] = env.SetValue("COPY_ALWAYS") envVars["ENABLE_DESIGNATE"] = env.SetValue("yes") @@ -108,6 +74,10 @@ func Deployment( volumeMounts = append(volumeMounts, instance.Spec.TLS.CreateVolumeMounts(nil)...) } + readinessProbe := formatReadinessProbe() + livenessProbe := formatLivenessProbe() + startupProbe := formatStartupProbe() + if instance.Spec.TLS.Enabled() { svc, err := instance.Spec.TLS.GenericService.ToService() if err != nil { @@ -193,3 +163,49 @@ func Deployment( return deployment, nil } + +func formatLivenessProbe() *corev1.Probe { + + return &corev1.Probe{ + TimeoutSeconds: 5, + PeriodSeconds: 10, + InitialDelaySeconds: 10, + ProbeHandler: corev1.ProbeHandler{ + HTTPGet: &corev1.HTTPGetAction{ + Path: horizonDashboardURL, + Port: intstr.FromString(horizonContainerPortName), + }, + }, + } +} + +func formatReadinessProbe() *corev1.Probe { + + return &corev1.Probe{ + TimeoutSeconds: 5, + PeriodSeconds: 10, + InitialDelaySeconds: 10, + ProbeHandler: corev1.ProbeHandler{ + HTTPGet: &corev1.HTTPGetAction{ + Path: horizonContainerPortName, + Port: intstr.FromString(horizonContainerPortName), + }, + }, + } +} + +func formatStartupProbe() *corev1.Probe { + + return &corev1.Probe{ + TimeoutSeconds: 5, + PeriodSeconds: 10, + FailureThreshold: 30, + InitialDelaySeconds: 10, + ProbeHandler: corev1.ProbeHandler{ + HTTPGet: &corev1.HTTPGetAction{ + Path: horizonDashboardURL, + Port: intstr.FromString(horizonContainerPortName), + }, + }, + } +}