Add Readiness and Liveness probes - code cleanup

This commit is contained in:
Tomasz Sęk 2019-04-15 21:47:02 +02:00
parent 3dde0b0f56
commit 70f35c47f0
No known key found for this signature in database
GPG Key ID: DC356D23F6A644D0
4 changed files with 23 additions and 21 deletions

View File

@ -10,8 +10,8 @@ spec:
path: /login path: /login
port: 8080 port: 8080
scheme: HTTP scheme: HTTP
failureThreshold: 12 failureThreshold: 10
initialDelaySeconds: 20 initialDelaySeconds: 30
periodSeconds: 10 periodSeconds: 10
successThreshold: 1 successThreshold: 1
timeoutSeconds: 5 timeoutSeconds: 5
@ -20,8 +20,8 @@ spec:
path: /login path: /login
port: 8080 port: 8080
scheme: HTTP scheme: HTTP
initialDelaySeconds: 20 initialDelaySeconds: 35
failureThreshold: 12 failureThreshold: 10
periodSeconds: 10 periodSeconds: 10
successThreshold: 1 successThreshold: 1
timeoutSeconds: 5 timeoutSeconds: 5

View File

@ -3,7 +3,6 @@ package jenkins
import ( import (
"context" "context"
"fmt" "fmt"
"k8s.io/apimachinery/pkg/util/intstr"
"reflect" "reflect"
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
@ -22,6 +21,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/intstr"
"sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller" "sigs.k8s.io/controller-runtime/pkg/controller"
"sigs.k8s.io/controller-runtime/pkg/handler" "sigs.k8s.io/controller-runtime/pkg/handler"

View File

@ -25,7 +25,6 @@ func TestConfiguration(t *testing.T) {
// Deletes test namespace // Deletes test namespace
defer ctx.Cleanup() defer ctx.Cleanup()
t.Logf("BASE")
jenkinsCRName := "e2e" jenkinsCRName := "e2e"
numberOfExecutors := 6 numberOfExecutors := 6
systemMessage := "Configuration as Code integration works!!!" systemMessage := "Configuration as Code integration works!!!"
@ -43,7 +42,6 @@ func TestConfiguration(t *testing.T) {
} }
// base // base
createUserConfigurationSecret(t, jenkinsCRName, namespace, systemMessageEnvName, systemMessage) createUserConfigurationSecret(t, jenkinsCRName, namespace, systemMessageEnvName, systemMessage)
createUserConfigurationConfigMap(t, jenkinsCRName, namespace, numberOfExecutors, fmt.Sprintf("${%s}", systemMessageEnvName)) createUserConfigurationConfigMap(t, jenkinsCRName, namespace, numberOfExecutors, fmt.Sprintf("${%s}", systemMessageEnvName))
jenkins := createJenkinsCR(t, jenkinsCRName, namespace, &[]v1alpha1.SeedJob{mySeedJob.SeedJob}) jenkins := createJenkinsCR(t, jenkinsCRName, namespace, &[]v1alpha1.SeedJob{mySeedJob.SeedJob})
@ -141,30 +139,32 @@ func verifyJenkinsMasterPodAttributes(t *testing.T, jenkins *v1alpha1.Jenkins) {
} }
} }
if jenkinsPod.Spec.Containers[0].Image != jenkins.Spec.Master.Image { jenkinsContainer := jenkinsPod.Spec.Containers[0]
t.Fatalf("Invalid jenkins pod image expected '%s', actual '%s'", jenkins.Spec.Master.Image, jenkinsPod.Spec.Containers[0].Image)
if jenkinsContainer.Image != jenkins.Spec.Master.Image {
t.Fatalf("Invalid jenkins pod image expected '%s', actual '%s'", jenkins.Spec.Master.Image, jenkinsContainer.Image)
} }
if !reflect.DeepEqual(jenkinsPod.Spec.Containers[0].Resources, jenkins.Spec.Master.Resources) { if !reflect.DeepEqual(jenkinsContainer.Resources, jenkins.Spec.Master.Resources) {
t.Fatalf("Invalid jenkins pod continer resources expected '%+v', actual '%+v'", jenkins.Spec.Master.Resources, jenkinsPod.Spec.Containers[0].Resources) t.Fatalf("Invalid jenkins pod continer resources expected '%+v', actual '%+v'", jenkins.Spec.Master.Resources, jenkinsContainer.Resources)
} }
if !reflect.DeepEqual(jenkinsPod.Spec.NodeSelector, jenkins.Spec.Master.NodeSelector) { if !reflect.DeepEqual(jenkinsPod.Spec.NodeSelector, jenkins.Spec.Master.NodeSelector) {
t.Fatalf("Invalid jenkins pod node selector expected '%+v', actual '%+v'", jenkins.Spec.Master.NodeSelector, jenkinsPod.Spec.NodeSelector) t.Fatalf("Invalid jenkins pod node selector expected '%+v', actual '%+v'", jenkins.Spec.Master.NodeSelector, jenkinsPod.Spec.NodeSelector)
} }
if !reflect.DeepEqual(jenkinsPod.Spec.Containers[0].ReadinessProbe, jenkins.Spec.Master.ReadinessProbe) { if !reflect.DeepEqual(jenkinsContainer.ReadinessProbe, jenkins.Spec.Master.ReadinessProbe) {
t.Fatalf("Invalid jenkins pod readinessProbe. Expected '%+v', actual '%+v'", jenkins.Spec.Master.NodeSelector, jenkinsPod.Spec.NodeSelector) t.Fatalf("Invalid jenkins pod readinessProbe. Expected '%+v', actual '%+v'", jenkins.Spec.Master.ReadinessProbe, jenkinsContainer.ReadinessProbe)
} }
if !reflect.DeepEqual(jenkinsPod.Spec.Containers[0].LivenessProbe, jenkins.Spec.Master.LivenessProbe) { if !reflect.DeepEqual(jenkinsContainer.LivenessProbe, jenkins.Spec.Master.LivenessProbe) {
t.Fatalf("Invalid jenkins pod livenessProbe. Expected '%+v', actual '%+v'", jenkins.Spec.Master.NodeSelector, jenkinsPod.Spec.NodeSelector) t.Fatalf("Invalid jenkins pod livenessProbe. Expected '%+v', actual '%+v'", jenkins.Spec.Master.LivenessProbe, jenkinsContainer.LivenessProbe)
} }
requiredEnvs := resources.GetJenkinsMasterPodBaseEnvs() requiredEnvs := resources.GetJenkinsMasterPodBaseEnvs()
requiredEnvs = append(requiredEnvs, jenkins.Spec.Master.Env...) requiredEnvs = append(requiredEnvs, jenkins.Spec.Master.Env...)
if !reflect.DeepEqual(jenkinsPod.Spec.Containers[0].Env, requiredEnvs) { if !reflect.DeepEqual(jenkinsContainer.Env, requiredEnvs) {
t.Fatalf("Invalid jenkins pod continer resources expected '%+v', actual '%+v'", requiredEnvs, jenkinsPod.Spec.Containers[0].Env) t.Fatalf("Invalid jenkins pod continer resources expected '%+v', actual '%+v'", requiredEnvs, jenkinsContainer.Env)
} }
t.Log("Jenkins pod attributes are valid") t.Log("Jenkins pod attributes are valid")

View File

@ -2,7 +2,6 @@ package e2e
import ( import (
"context" "context"
"k8s.io/apimachinery/pkg/util/intstr"
"testing" "testing"
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
@ -15,6 +14,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/intstr"
) )
func getJenkins(t *testing.T, namespace, name string) *v1alpha1.Jenkins { func getJenkins(t *testing.T, namespace, name string) *v1alpha1.Jenkins {
@ -94,7 +94,9 @@ func createJenkinsCR(t *testing.T, name, namespace string, seedJob *[]v1alpha1.S
Scheme: corev1.URISchemeHTTP, Scheme: corev1.URISchemeHTTP,
}, },
}, },
InitialDelaySeconds: int32(50), InitialDelaySeconds: int32(35),
TimeoutSeconds: int32(4),
FailureThreshold: int32(10),
}, },
LivenessProbe: &corev1.Probe{ LivenessProbe: &corev1.Probe{
Handler: corev1.Handler{ Handler: corev1.Handler{
@ -105,8 +107,8 @@ func createJenkinsCR(t *testing.T, name, namespace string, seedJob *[]v1alpha1.S
}, },
}, },
InitialDelaySeconds: int32(40), InitialDelaySeconds: int32(40),
TimeoutSeconds: int32(8), TimeoutSeconds: int32(4),
FailureThreshold: int32(15), FailureThreshold: int32(10),
}, },
}, },
SeedJobs: seedJobs, SeedJobs: seedJobs,