Completed helm e2e tests and updated helm charts
- Completed helm tests for various scenarios - Disabled startupapi check for cert manager webhook, defined a secret and updated templates - Made the webhook completely optional
This commit is contained in:
		
							parent
							
								
									e2ec2ea329
								
							
						
					
					
						commit
						f527a8c5cb
					
				
							
								
								
									
										6
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										6
									
								
								Makefile
								
								
								
								
							|  | @ -97,7 +97,7 @@ e2e: deepcopy-gen manifests ## Runs e2e tests, you can use EXTRA_ARGS | ||||||
| .PHONY: helm-e2e | .PHONY: helm-e2e | ||||||
| IMAGE_NAME := $(DOCKER_REGISTRY):$(GITCOMMIT) | IMAGE_NAME := $(DOCKER_REGISTRY):$(GITCOMMIT) | ||||||
| #TODO: install cert-manager before running helm charts
 | #TODO: install cert-manager before running helm charts
 | ||||||
| helm-e2e:  helm install-cert-manager container-runtime-build ## Runs helm e2e tests, you can use EXTRA_ARGS
 | helm-e2e:  helm container-runtime-build ## Runs helm e2e tests, you can use EXTRA_ARGS
 | ||||||
| 	@echo "+ $@" | 	@echo "+ $@" | ||||||
| 	RUNNING_TESTS=1 go test -parallel=1 "./test/helm/" -ginkgo.v -tags "$(BUILDTAGS) cgo" -v -timeout 60m -run "$(E2E_TEST_SELECTOR)" -image-name=$(IMAGE_NAME) $(E2E_TEST_ARGS) | 	RUNNING_TESTS=1 go test -parallel=1 "./test/helm/" -ginkgo.v -tags "$(BUILDTAGS) cgo" -v -timeout 60m -run "$(E2E_TEST_SELECTOR)" -image-name=$(IMAGE_NAME) $(E2E_TEST_ARGS) | ||||||
| 
 | 
 | ||||||
|  | @ -538,8 +538,10 @@ all-in-one-build-webhook: ## Re-generate all-in-one yaml | ||||||
| 	 | 	 | ||||||
| # start the cluster locally and set it to use the docker daemon from minikube
 | # start the cluster locally and set it to use the docker daemon from minikube
 | ||||||
| install-cert-manager: minikube-start | install-cert-manager: minikube-start | ||||||
| 	kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.4.0/cert-manager.yaml  | 	kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.1/cert-manager.yaml  | ||||||
| 
 | 
 | ||||||
|  | uninstall-cert-manager: minikube-start | ||||||
|  | 	kubectl delete -f https://github.com/jetstack/cert-manager/releases/download/v1.5.1/cert-manager.yaml  | ||||||
| 	 | 	 | ||||||
| #Launch cert-manager and deploy the operator locally along with webhook
 | #Launch cert-manager and deploy the operator locally along with webhook
 | ||||||
| deploy-webhook: install-cert-manager install-crds container-runtime-build all-in-one-build-webhook  | deploy-webhook: install-cert-manager install-crds container-runtime-build all-in-one-build-webhook  | ||||||
|  |  | ||||||
|  | @ -26,6 +26,7 @@ import ( | ||||||
| 	"os" | 	"os" | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
|  | 	//"github.com/jenkinsci/kubernetes-operator/pkg/configuration/base/resources"
 | ||||||
| 	"github.com/jenkinsci/kubernetes-operator/pkg/constants" | 	"github.com/jenkinsci/kubernetes-operator/pkg/constants" | ||||||
| 	"github.com/jenkinsci/kubernetes-operator/pkg/plugins" | 	"github.com/jenkinsci/kubernetes-operator/pkg/plugins" | ||||||
| 
 | 
 | ||||||
|  | @ -345,15 +346,32 @@ func CreateJenkinsCR(name string, namespace string, userPlugins []Plugin, valida | ||||||
| 			Namespace: namespace, | 			Namespace: namespace, | ||||||
| 		}, | 		}, | ||||||
| 		Spec: JenkinsSpec{ | 		Spec: JenkinsSpec{ | ||||||
|  | 			GroovyScripts: GroovyScripts{ | ||||||
|  | 				Customization: Customization{ | ||||||
|  | 					Configurations: []ConfigMapRef{}, | ||||||
|  | 					Secret: SecretRef{ | ||||||
|  | 						Name: "", | ||||||
|  | 					}, | ||||||
|  | 				}, | ||||||
|  | 			}, | ||||||
|  | 			ConfigurationAsCode: ConfigurationAsCode{ | ||||||
|  | 				Customization: Customization{ | ||||||
|  | 					Configurations: []ConfigMapRef{}, | ||||||
|  | 					Secret: SecretRef{ | ||||||
|  | 						Name: "", | ||||||
|  | 					}, | ||||||
|  | 				}, | ||||||
|  | 			}, | ||||||
| 			Master: JenkinsMaster{ | 			Master: JenkinsMaster{ | ||||||
| 				Annotations: map[string]string{"test": "label"}, | 				Plugins:               userPlugins, | ||||||
| 				Plugins:     userPlugins, | 				DisableCSRFProtection: false, | ||||||
| 			}, | 			}, | ||||||
| 			ValidateSecurityWarnings: validateSecurityWarnings, | 			ValidateSecurityWarnings: validateSecurityWarnings, | ||||||
| 			Service: Service{ | 			Service: Service{ | ||||||
| 				Type: corev1.ServiceTypeNodePort, | 				Type: corev1.ServiceTypeNodePort, | ||||||
| 				Port: constants.DefaultHTTPPortInt32, | 				Port: constants.DefaultHTTPPortInt32, | ||||||
| 			}, | 			}, | ||||||
|  | 			JenkinsAPISettings: JenkinsAPISettings{AuthorizationStrategy: CreateUserAuthorizationStrategy}, | ||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -145,8 +145,8 @@ spec: | ||||||
|     securityContext: |     securityContext: | ||||||
|     {{- toYaml . | nindent 6 }} |     {{- toYaml . | nindent 6 }} | ||||||
|     {{- end }} |     {{- end }} | ||||||
|   {{- with .Values.jenkins.seedJobs }} |  | ||||||
|   ValidateSecurityWarnings: {{ .Values.jenkins.ValidateSecurityWarnings }} |   ValidateSecurityWarnings: {{ .Values.jenkins.ValidateSecurityWarnings }} | ||||||
|  |   {{- with .Values.jenkins.seedJobs }} | ||||||
|   seedJobs: {{- toYaml . | nindent 4 }} |   seedJobs: {{- toYaml . | nindent 4 }} | ||||||
|   {{- end }} |   {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|  |  | ||||||
|  | @ -25,4 +25,10 @@ spec: | ||||||
|   selfSigned: {} |   selfSigned: {} | ||||||
| 
 | 
 | ||||||
| --- | --- | ||||||
|  | apiVersion: v1 | ||||||
|  | kind: Secret | ||||||
|  | metadata: | ||||||
|  |   name: jenkins-{{ .Values.webhook.certificate.name }} | ||||||
|  | type: opaque | ||||||
|  | 
 | ||||||
| {{- end }} | {{- end }} | ||||||
|  | @ -16,6 +16,7 @@ webhooks: | ||||||
|       path: /validate-jenkins-io-v1alpha2-jenkins |       path: /validate-jenkins-io-v1alpha2-jenkins | ||||||
|   failurePolicy: Fail |   failurePolicy: Fail | ||||||
|   name: vjenkins.kb.io |   name: vjenkins.kb.io | ||||||
|  |   timeoutSeconds: 30 | ||||||
|   rules: |   rules: | ||||||
|   - apiGroups: |   - apiGroups: | ||||||
|     - jenkins.io |     - jenkins.io | ||||||
|  |  | ||||||
|  | @ -293,3 +293,9 @@ webhook: | ||||||
|     renewbefore: 360h |     renewbefore: 360h | ||||||
|   # enable or disable the validation webhook |   # enable or disable the validation webhook | ||||||
|   enabled: false |   enabled: false | ||||||
|  | 
 | ||||||
|  | # This startupapicheck is a Helm post-install hook that waits for the webhook | ||||||
|  | # endpoints to become available. | ||||||
|  | cert-manager: | ||||||
|  |   startupapicheck: | ||||||
|  |     enabled: false | ||||||
|  | @ -5,6 +5,7 @@ kind: CustomResourceDefinition | ||||||
| metadata: | metadata: | ||||||
|   annotations: |   annotations: | ||||||
|     controller-gen.kubebuilder.io/version: v0.4.1 |     controller-gen.kubebuilder.io/version: v0.4.1 | ||||||
|  |   creationTimestamp: null | ||||||
|   name: jenkins.jenkins.io |   name: jenkins.jenkins.io | ||||||
| spec: | spec: | ||||||
|   group: jenkins.io |   group: jenkins.io | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								main.go
								
								
								
								
							
							
						
						
									
										6
									
								
								main.go
								
								
								
								
							|  | @ -180,8 +180,10 @@ func main() { | ||||||
| 		fatal(errors.Wrap(err, "unable to create Jenkins controller"), *debug) | 		fatal(errors.Wrap(err, "unable to create Jenkins controller"), *debug) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if err = (&v1alpha2.Jenkins{}).SetupWebhookWithManager(mgr); err != nil { | 	if ValidateSecurityWarnings { | ||||||
| 		fatal(errors.Wrap(err, "unable to create Webhook"), *debug) | 		if err = (&v1alpha2.Jenkins{}).SetupWebhookWithManager(mgr); err != nil { | ||||||
|  | 			fatal(errors.Wrap(err, "unable to create Webhook"), *debug) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 	// +kubebuilder:scaffold:builder
 | 	// +kubebuilder:scaffold:builder
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,20 +1,26 @@ | ||||||
| package helm | package helm | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"context" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"os/exec" | 	"os/exec" | ||||||
|  | 	"time" | ||||||
| 
 | 
 | ||||||
| 	"github.com/jenkinsci/kubernetes-operator/api/v1alpha2" | 	"github.com/jenkinsci/kubernetes-operator/api/v1alpha2" | ||||||
|  | 	"github.com/jenkinsci/kubernetes-operator/pkg/configuration/base/resources" | ||||||
|  | 	"github.com/jenkinsci/kubernetes-operator/pkg/constants" | ||||||
| 	"github.com/jenkinsci/kubernetes-operator/test/e2e" | 	"github.com/jenkinsci/kubernetes-operator/test/e2e" | ||||||
|  | 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||||
|  | 	"k8s.io/apimachinery/pkg/util/intstr" | ||||||
| 
 | 
 | ||||||
| 	. "github.com/onsi/ginkgo" | 	. "github.com/onsi/ginkgo" | ||||||
| 	. "github.com/onsi/gomega" | 	. "github.com/onsi/gomega" | ||||||
| 	corev1 "k8s.io/api/core/v1" | 	corev1 "k8s.io/api/core/v1" | ||||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" |  | ||||||
| 	// +kubebuilder:scaffold:imports
 | 	// +kubebuilder:scaffold:imports
 | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var _ = Describe("Jenkins controller", func() { | var _ = Describe("Jenkins Controller with webhook", func() { | ||||||
|  | 
 | ||||||
| 	var ( | 	var ( | ||||||
| 		namespace *corev1.Namespace | 		namespace *corev1.Namespace | ||||||
| 	) | 	) | ||||||
|  | @ -23,38 +29,193 @@ var _ = Describe("Jenkins controller", func() { | ||||||
| 		namespace = e2e.CreateNamespace() | 		namespace = e2e.CreateNamespace() | ||||||
| 	}) | 	}) | ||||||
| 	AfterEach(func() { | 	AfterEach(func() { | ||||||
|  | 		cmd := exec.Command("../../bin/helm", "delete", "jenkins", "--namespace", namespace.Name) | ||||||
|  | 		output, err := cmd.CombinedOutput() | ||||||
|  | 		Expect(err).NotTo(HaveOccurred(), string(output)) | ||||||
|  | 
 | ||||||
| 		e2e.ShowLogsIfTestHasFailed(CurrentGinkgoTestDescription().Failed, namespace.Name) | 		e2e.ShowLogsIfTestHasFailed(CurrentGinkgoTestDescription().Failed, namespace.Name) | ||||||
| 		e2e.DestroyNamespace(namespace) | 		e2e.DestroyNamespace(namespace) | ||||||
| 	}) | 	}) | ||||||
| 	Context("when deploying Helm Chart to cluster", func() { | 	It("Deploys Jenkins operator with webhook enabled along with the default jenkins image", func() { | ||||||
| 		It("creates Jenkins instance and configures it", func() { | 		jenkins := &v1alpha2.Jenkins{ | ||||||
|  | 			TypeMeta: v1alpha2.JenkinsTypeMeta(), | ||||||
|  | 			ObjectMeta: metav1.ObjectMeta{ | ||||||
|  | 				Name:      "jenkins", | ||||||
|  | 				Namespace: namespace.Name, | ||||||
|  | 			}, | ||||||
|  | 		} | ||||||
| 
 | 
 | ||||||
| 			jenkins := &v1alpha2.Jenkins{ | 		cmd := exec.Command("../../bin/helm", "upgrade", "jenkins", "../../chart/jenkins-operator", "--namespace", namespace.Name, "--debug", | ||||||
| 				TypeMeta: v1alpha2.JenkinsTypeMeta(), | 			"--set-string", fmt.Sprintf("jenkins.namespace=%s", namespace.Name), | ||||||
| 				ObjectMeta: metav1.ObjectMeta{ | 			"--set-string", fmt.Sprintf("operator.image=%s", *imageName), "--install", "--wait") | ||||||
| 					Name:      "jenkins", | 		output, err := cmd.CombinedOutput() | ||||||
| 					Namespace: namespace.Name, | 		Expect(err).NotTo(HaveOccurred(), string(output)) | ||||||
| 				}, |  | ||||||
| 			} |  | ||||||
| 
 | 
 | ||||||
| 			cmd := exec.Command("../../bin/helm", "upgrade", "jenkins", "../../chart/jenkins-operator", "--namespace", namespace.Name, "--debug", | 		e2e.WaitForJenkinsBaseConfigurationToComplete(jenkins) | ||||||
| 				"--set-string", fmt.Sprintf("jenkins.namespace=%s", namespace.Name), | 		e2e.WaitForJenkinsUserConfigurationToComplete(jenkins) | ||||||
| 				"--set-string", fmt.Sprintf("operator.image=%s", *imageName), "--install") |  | ||||||
| 			output, err := cmd.CombinedOutput() |  | ||||||
| 			Expect(err).NotTo(HaveOccurred(), string(output)) |  | ||||||
| 
 | 
 | ||||||
| 			e2e.WaitForJenkinsBaseConfigurationToComplete(jenkins) | 	}) | ||||||
| 			e2e.WaitForJenkinsUserConfigurationToComplete(jenkins) |  | ||||||
| 
 | 
 | ||||||
| 			cmd = exec.Command("../../bin/helm", "upgrade", "jenkins", "../../chart/jenkins-operator", "--namespace", namespace.Name, "--debug", | 	It("Deploys Jenkins operator along with webhook and cert-manager", func() { | ||||||
| 				"--set-string", fmt.Sprintf("jenkins.namespace=%s", namespace.Name), |  | ||||||
| 				"--set-string", fmt.Sprintf("operator.image=%s", *imageName), "--install") |  | ||||||
| 			output, err = cmd.CombinedOutput() |  | ||||||
| 
 | 
 | ||||||
| 			Expect(err).NotTo(HaveOccurred(), string(output)) | 		By("Deploying the operator along with webhook and cert-manager") | ||||||
|  | 		cmd := exec.Command("../../bin/helm", "upgrade", "jenkins", "../../chart/jenkins-operator", "--namespace", namespace.Name, "--debug", | ||||||
|  | 			"--set-string", fmt.Sprintf("jenkins.namespace=%s", namespace.Name), "--set-string", fmt.Sprintf("operator.image=%s", *imageName), | ||||||
|  | 			"--set", fmt.Sprintf("webhook.enabled=%t", true), "--set", fmt.Sprintf("jenkins.enabled=%t", false), "--install", "--wait") | ||||||
|  | 		output, err := cmd.CombinedOutput() | ||||||
|  | 		Expect(err).NotTo(HaveOccurred(), string(output)) | ||||||
| 
 | 
 | ||||||
| 			e2e.WaitForJenkinsBaseConfigurationToComplete(jenkins) | 		By("Waiting for the operator to fetch the plugin data ") | ||||||
| 			e2e.WaitForJenkinsUserConfigurationToComplete(jenkins) | 		time.Sleep(time.Duration(200) * time.Second) | ||||||
| 		}) | 
 | ||||||
|  | 		By("Denies a create request for a Jenkins custom resource with some plugins having security warnings and validation is turned on") | ||||||
|  | 		userplugins := []v1alpha2.Plugin{ | ||||||
|  | 			{Name: "simple-theme-plugin", Version: "0.6"}, | ||||||
|  | 			{Name: "audit-trail", Version: "3.5"}, | ||||||
|  | 			{Name: "github", Version: "1.29.0"}, | ||||||
|  | 		} | ||||||
|  | 		jenkins := CreateJenkinsCR("jenkins", namespace.Name, userplugins, true) | ||||||
|  | 		Expect(e2e.K8sClient.Create(context.TODO(), jenkins)).Should(MatchError("admission webhook \"vjenkins.kb.io\" denied the request: security vulnerabilities detected in the following user-defined plugins: \naudit-trail:3.5\ngithub:1.29.0")) | ||||||
|  | 
 | ||||||
|  | 		By("Creating the same Jenkins custom resource with some plugins having security warnings but validation is turned off") | ||||||
|  | 		userplugins = []v1alpha2.Plugin{ | ||||||
|  | 			{Name: "simple-theme-plugin", Version: "0.6"}, | ||||||
|  | 			{Name: "audit-trail", Version: "3.5"}, | ||||||
|  | 			{Name: "github", Version: "1.29.0"}, | ||||||
|  | 		} | ||||||
|  | 		jenkins = CreateJenkinsCR("jenkins", namespace.Name, userplugins, false) | ||||||
|  | 		Expect(e2e.K8sClient.Create(context.TODO(), jenkins)).Should(Succeed()) | ||||||
|  | 		e2e.WaitForJenkinsBaseConfigurationToComplete(jenkins) | ||||||
|  | 		e2e.WaitForJenkinsUserConfigurationToComplete(jenkins) | ||||||
|  | 
 | ||||||
|  | 		By("Updating the Jenkins resource with plugins not having any security warnings and validation is turned on") | ||||||
|  | 		userplugins = []v1alpha2.Plugin{ | ||||||
|  | 			{Name: "simple-theme-plugin", Version: "0.6"}, | ||||||
|  | 			{Name: "audit-trail", Version: "3.8"}, | ||||||
|  | 			{Name: "github", Version: "1.31.0"}, | ||||||
|  | 		} | ||||||
|  | 		jenkins.Spec.Master.Plugins = userplugins | ||||||
|  | 		jenkins.Spec.ValidateSecurityWarnings = true | ||||||
|  | 		Expect(e2e.K8sClient.Update(context.TODO(), jenkins)).Should(Succeed()) | ||||||
|  | 		jenkins = &v1alpha2.Jenkins{ | ||||||
|  | 			TypeMeta: v1alpha2.JenkinsTypeMeta(), | ||||||
|  | 			ObjectMeta: metav1.ObjectMeta{ | ||||||
|  | 				Name:      "jenkins", | ||||||
|  | 				Namespace: namespace.Name, | ||||||
|  | 			}, | ||||||
|  | 		} | ||||||
|  | 		e2e.WaitForJenkinsBaseConfigurationToComplete(jenkins) | ||||||
|  | 		e2e.WaitForJenkinsUserConfigurationToComplete(jenkins) | ||||||
|  | 
 | ||||||
|  | 		By("Failing to update the Jenkins custom resource because some plugins having security warnings and validation is turned on") | ||||||
|  | 		userplugins = []v1alpha2.Plugin{ | ||||||
|  | 			{Name: "vncviewer", Version: "1.7"}, | ||||||
|  | 			{Name: "build-timestamp", Version: "1.0.3"}, | ||||||
|  | 			{Name: "deployit-plugin", Version: "7.5.5"}, | ||||||
|  | 			{Name: "github-branch-source", Version: "2.0.7"}, | ||||||
|  | 			{Name: "aws-lambda-cloud", Version: "0.4"}, | ||||||
|  | 			{Name: "groovy", Version: "1.31"}, | ||||||
|  | 			{Name: "google-login", Version: "1.2"}, | ||||||
|  | 		} | ||||||
|  | 		jenkins.Spec.Master.Plugins = userplugins | ||||||
|  | 		Expect(e2e.K8sClient.Update(context.TODO(), jenkins)).Should(MatchError("admission webhook \"vjenkins.kb.io\" denied the request: security vulnerabilities detected in the following user-defined plugins: \nvncviewer:1.7\ndeployit-plugin:7.5.5\ngithub-branch-source:2.0.7\ngroovy:1.31\ngoogle-login:1.2")) | ||||||
| 	}) | 	}) | ||||||
| }) | }) | ||||||
|  | 
 | ||||||
|  | func CreateJenkinsCR(name string, namespace string, userPlugins []v1alpha2.Plugin, validateSecurityWarnings bool) *v1alpha2.Jenkins { | ||||||
|  | 	jenkins := &v1alpha2.Jenkins{ | ||||||
|  | 		TypeMeta: v1alpha2.JenkinsTypeMeta(), | ||||||
|  | 		ObjectMeta: metav1.ObjectMeta{ | ||||||
|  | 			Name:      name, | ||||||
|  | 			Namespace: namespace, | ||||||
|  | 		}, | ||||||
|  | 		Spec: v1alpha2.JenkinsSpec{ | ||||||
|  | 			GroovyScripts: v1alpha2.GroovyScripts{ | ||||||
|  | 				Customization: v1alpha2.Customization{ | ||||||
|  | 					Configurations: []v1alpha2.ConfigMapRef{}, | ||||||
|  | 					Secret: v1alpha2.SecretRef{ | ||||||
|  | 						Name: "", | ||||||
|  | 					}, | ||||||
|  | 				}, | ||||||
|  | 			}, | ||||||
|  | 			ConfigurationAsCode: v1alpha2.ConfigurationAsCode{ | ||||||
|  | 				Customization: v1alpha2.Customization{ | ||||||
|  | 					Configurations: []v1alpha2.ConfigMapRef{}, | ||||||
|  | 					Secret: v1alpha2.SecretRef{ | ||||||
|  | 						Name: "", | ||||||
|  | 					}, | ||||||
|  | 				}, | ||||||
|  | 			}, | ||||||
|  | 			Master: v1alpha2.JenkinsMaster{ | ||||||
|  | 				Containers: []v1alpha2.Container{ | ||||||
|  | 					{ | ||||||
|  | 						Name: resources.JenkinsMasterContainerName, | ||||||
|  | 						Env: []corev1.EnvVar{ | ||||||
|  | 							{ | ||||||
|  | 								Name:  "TEST_ENV", | ||||||
|  | 								Value: "test_env_value", | ||||||
|  | 							}, | ||||||
|  | 						}, | ||||||
|  | 						ReadinessProbe: &corev1.Probe{ | ||||||
|  | 							Handler: corev1.Handler{ | ||||||
|  | 								HTTPGet: &corev1.HTTPGetAction{ | ||||||
|  | 									Path:   "/login", | ||||||
|  | 									Port:   intstr.FromString("http"), | ||||||
|  | 									Scheme: corev1.URISchemeHTTP, | ||||||
|  | 								}, | ||||||
|  | 							}, | ||||||
|  | 							InitialDelaySeconds: int32(100), | ||||||
|  | 							TimeoutSeconds:      int32(4), | ||||||
|  | 							FailureThreshold:    int32(40), | ||||||
|  | 							SuccessThreshold:    int32(1), | ||||||
|  | 							PeriodSeconds:       int32(10), | ||||||
|  | 						}, | ||||||
|  | 						LivenessProbe: &corev1.Probe{ | ||||||
|  | 							Handler: corev1.Handler{ | ||||||
|  | 								HTTPGet: &corev1.HTTPGetAction{ | ||||||
|  | 									Path:   "/login", | ||||||
|  | 									Port:   intstr.FromString("http"), | ||||||
|  | 									Scheme: corev1.URISchemeHTTP, | ||||||
|  | 								}, | ||||||
|  | 							}, | ||||||
|  | 							InitialDelaySeconds: int32(80), | ||||||
|  | 							TimeoutSeconds:      int32(4), | ||||||
|  | 							FailureThreshold:    int32(30), | ||||||
|  | 							SuccessThreshold:    int32(1), | ||||||
|  | 							PeriodSeconds:       int32(5), | ||||||
|  | 						}, | ||||||
|  | 						VolumeMounts: []corev1.VolumeMount{ | ||||||
|  | 							{ | ||||||
|  | 								Name:      "plugins-cache", | ||||||
|  | 								MountPath: "/usr/share/jenkins/ref/plugins", | ||||||
|  | 							}, | ||||||
|  | 						}, | ||||||
|  | 					}, | ||||||
|  | 					{ | ||||||
|  | 						Name:  "envoyproxy", | ||||||
|  | 						Image: "envoyproxy/envoy-alpine:v1.14.1", | ||||||
|  | 					}, | ||||||
|  | 				}, | ||||||
|  | 				Plugins:               userPlugins, | ||||||
|  | 				DisableCSRFProtection: false, | ||||||
|  | 				NodeSelector:          map[string]string{"kubernetes.io/os": "linux"}, | ||||||
|  | 				Volumes: []corev1.Volume{ | ||||||
|  | 					{ | ||||||
|  | 						Name: "plugins-cache", | ||||||
|  | 						VolumeSource: corev1.VolumeSource{ | ||||||
|  | 							EmptyDir: &corev1.EmptyDirVolumeSource{}, | ||||||
|  | 						}, | ||||||
|  | 					}, | ||||||
|  | 				}, | ||||||
|  | 			}, | ||||||
|  | 			ValidateSecurityWarnings: validateSecurityWarnings, | ||||||
|  | 			Service: v1alpha2.Service{ | ||||||
|  | 				Type: corev1.ServiceTypeNodePort, | ||||||
|  | 				Port: constants.DefaultHTTPPortInt32, | ||||||
|  | 			}, | ||||||
|  | 			JenkinsAPISettings: v1alpha2.JenkinsAPISettings{AuthorizationStrategy: v1alpha2.CreateUserAuthorizationStrategy}, | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return jenkins | ||||||
|  | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue