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