Allow configure ImagePullPolicy for Jenkins master pod
This commit is contained in:
		
							parent
							
								
									2aa96789b4
								
							
						
					
					
						commit
						d278847a46
					
				| 
						 | 
				
			
			@ -21,11 +21,12 @@ type JenkinsSpec struct {
 | 
			
		|||
// JenkinsMaster defines the Jenkins master pod attributes and plugins,
 | 
			
		||||
// every single change requires Jenkins master pod restart
 | 
			
		||||
type JenkinsMaster struct {
 | 
			
		||||
	Image        string                      `json:"image,omitempty"`
 | 
			
		||||
	NodeSelector map[string]string           `json:"nodeSelector,omitempty"`
 | 
			
		||||
	Annotations  map[string]string           `json:"masterAnnotations,omitempty"`
 | 
			
		||||
	Resources    corev1.ResourceRequirements `json:"resources,omitempty"`
 | 
			
		||||
	Env          []corev1.EnvVar             `json:"env,omitempty"`
 | 
			
		||||
	Image           string                      `json:"image,omitempty"`
 | 
			
		||||
	ImagePullPolicy corev1.PullPolicy           `json:"imagePullPolicy,omitempty"`
 | 
			
		||||
	NodeSelector    map[string]string           `json:"nodeSelector,omitempty"`
 | 
			
		||||
	Annotations     map[string]string           `json:"masterAnnotations,omitempty"`
 | 
			
		||||
	Resources       corev1.ResourceRequirements `json:"resources,omitempty"`
 | 
			
		||||
	Env             []corev1.EnvVar             `json:"env,omitempty"`
 | 
			
		||||
	// OperatorPlugins contains plugins required by operator
 | 
			
		||||
	OperatorPlugins map[string][]string `json:"basePlugins,omitempty"`
 | 
			
		||||
	// Plugins contains plugins required by user
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -373,36 +373,39 @@ func isPodTerminating(pod corev1.Pod) bool {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func (r *ReconcileJenkinsBaseConfiguration) isRecreatePodNeeded(currentJenkinsMasterPod corev1.Pod) bool {
 | 
			
		||||
	recreatePod := false
 | 
			
		||||
 | 
			
		||||
	if currentJenkinsMasterPod.Status.Phase == corev1.PodFailed ||
 | 
			
		||||
		currentJenkinsMasterPod.Status.Phase == corev1.PodSucceeded ||
 | 
			
		||||
		currentJenkinsMasterPod.Status.Phase == corev1.PodUnknown {
 | 
			
		||||
		r.logger.Info(fmt.Sprintf("Invalid Jenkins pod phase '%+v', recreating pod", currentJenkinsMasterPod.Status))
 | 
			
		||||
		recreatePod = true
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if r.jenkins.Spec.Master.Image != currentJenkinsMasterPod.Spec.Containers[0].Image {
 | 
			
		||||
		r.logger.Info(fmt.Sprintf("Jenkins image has changed to '%+v', recreating pod", r.jenkins.Spec.Master.Image))
 | 
			
		||||
		recreatePod = true
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if r.jenkins.Spec.Master.ImagePullPolicy != currentJenkinsMasterPod.Spec.Containers[0].ImagePullPolicy {
 | 
			
		||||
		r.logger.Info(fmt.Sprintf("Jenkins image pull policy has changed to '%+v', recreating pod", r.jenkins.Spec.Master.ImagePullPolicy))
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if len(r.jenkins.Spec.Master.Annotations) > 0 &&
 | 
			
		||||
		!reflect.DeepEqual(r.jenkins.Spec.Master.Annotations, currentJenkinsMasterPod.ObjectMeta.Annotations) {
 | 
			
		||||
		r.logger.Info(fmt.Sprintf("Jenkins pod annotations have changed to '%+v', recreating pod", r.jenkins.Spec.Master.Annotations))
 | 
			
		||||
		recreatePod = true
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if !reflect.DeepEqual(r.jenkins.Spec.Master.Resources, currentJenkinsMasterPod.Spec.Containers[0].Resources) {
 | 
			
		||||
		r.logger.Info(fmt.Sprintf("Jenkins pod resources have changed, actual '%+v' required '%+v' - recreating pod",
 | 
			
		||||
			currentJenkinsMasterPod.Spec.Containers[0].Resources, r.jenkins.Spec.Master.Resources))
 | 
			
		||||
		recreatePod = true
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if !reflect.DeepEqual(r.jenkins.Spec.Master.NodeSelector, currentJenkinsMasterPod.Spec.NodeSelector) {
 | 
			
		||||
		r.logger.Info(fmt.Sprintf("Jenkins pod node selector has changed, actual '%+v' required '%+v' - recreating pod",
 | 
			
		||||
			currentJenkinsMasterPod.Spec.NodeSelector, r.jenkins.Spec.Master.NodeSelector))
 | 
			
		||||
		recreatePod = true
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	requiredEnvs := resources.GetJenkinsMasterPodBaseEnvs()
 | 
			
		||||
| 
						 | 
				
			
			@ -410,10 +413,10 @@ func (r *ReconcileJenkinsBaseConfiguration) isRecreatePodNeeded(currentJenkinsMa
 | 
			
		|||
	if !reflect.DeepEqual(requiredEnvs, currentJenkinsMasterPod.Spec.Containers[0].Env) {
 | 
			
		||||
		r.logger.Info(fmt.Sprintf("Jenkins env have changed, actual '%+v' required '%+v' - recreating pod",
 | 
			
		||||
			currentJenkinsMasterPod.Spec.Containers[0].Env, requiredEnvs))
 | 
			
		||||
		recreatePod = true
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return recreatePod
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *ReconcileJenkinsBaseConfiguration) restartJenkinsMasterPod(meta metav1.ObjectMeta) error {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -97,8 +97,9 @@ func NewJenkinsMasterPod(objectMeta metav1.ObjectMeta, jenkins *v1alpha1.Jenkins
 | 
			
		|||
			NodeSelector: jenkins.Spec.Master.NodeSelector,
 | 
			
		||||
			Containers: []corev1.Container{
 | 
			
		||||
				{
 | 
			
		||||
					Name:  "jenkins-master",
 | 
			
		||||
					Image: jenkins.Spec.Master.Image,
 | 
			
		||||
					Name:            "jenkins-master",
 | 
			
		||||
					Image:           jenkins.Spec.Master.Image,
 | 
			
		||||
					ImagePullPolicy: jenkins.Spec.Master.ImagePullPolicy,
 | 
			
		||||
					Command: []string{
 | 
			
		||||
						"bash",
 | 
			
		||||
						fmt.Sprintf("%s/%s", jenkinsScriptsVolumePath, initScriptName),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -219,9 +219,15 @@ func (r *ReconcileJenkins) setDefaults(jenkins *v1alpha1.Jenkins, logger logr.Lo
 | 
			
		|||
		logger.Info("Setting default Jenkins master image: " + constants.DefaultJenkinsMasterImage)
 | 
			
		||||
		changed = true
 | 
			
		||||
		jenkins.Spec.Master.Image = constants.DefaultJenkinsMasterImage
 | 
			
		||||
		jenkins.Spec.Master.ImagePullPolicy = corev1.PullAlways
 | 
			
		||||
	}
 | 
			
		||||
	if len(jenkins.Spec.Master.ImagePullPolicy) == 0 {
 | 
			
		||||
		logger.Info(fmt.Sprintf("Setting default Jenkins master image pull policy: %s", corev1.PullAlways))
 | 
			
		||||
		changed = true
 | 
			
		||||
		jenkins.Spec.Master.ImagePullPolicy = corev1.PullAlways
 | 
			
		||||
	}
 | 
			
		||||
	if len(jenkins.Spec.Master.OperatorPlugins) == 0 {
 | 
			
		||||
		logger.Info("Setting default base plugins")
 | 
			
		||||
		logger.Info("Setting default operator plugins")
 | 
			
		||||
		changed = true
 | 
			
		||||
		jenkins.Spec.Master.OperatorPlugins = plugins.BasePlugins()
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue