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,
|
// JenkinsMaster defines the Jenkins master pod attributes and plugins,
|
||||||
// every single change requires Jenkins master pod restart
|
// every single change requires Jenkins master pod restart
|
||||||
type JenkinsMaster struct {
|
type JenkinsMaster struct {
|
||||||
Image string `json:"image,omitempty"`
|
Image string `json:"image,omitempty"`
|
||||||
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
|
ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"`
|
||||||
Annotations map[string]string `json:"masterAnnotations,omitempty"`
|
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
|
||||||
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
|
Annotations map[string]string `json:"masterAnnotations,omitempty"`
|
||||||
Env []corev1.EnvVar `json:"env,omitempty"`
|
Resources corev1.ResourceRequirements `json:"resources,omitempty"`
|
||||||
|
Env []corev1.EnvVar `json:"env,omitempty"`
|
||||||
// OperatorPlugins contains plugins required by operator
|
// OperatorPlugins contains plugins required by operator
|
||||||
OperatorPlugins map[string][]string `json:"basePlugins,omitempty"`
|
OperatorPlugins map[string][]string `json:"basePlugins,omitempty"`
|
||||||
// Plugins contains plugins required by user
|
// Plugins contains plugins required by user
|
||||||
|
|
|
||||||
|
|
@ -373,36 +373,39 @@ func isPodTerminating(pod corev1.Pod) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *ReconcileJenkinsBaseConfiguration) isRecreatePodNeeded(currentJenkinsMasterPod corev1.Pod) bool {
|
func (r *ReconcileJenkinsBaseConfiguration) isRecreatePodNeeded(currentJenkinsMasterPod corev1.Pod) bool {
|
||||||
recreatePod := false
|
|
||||||
|
|
||||||
if currentJenkinsMasterPod.Status.Phase == corev1.PodFailed ||
|
if currentJenkinsMasterPod.Status.Phase == corev1.PodFailed ||
|
||||||
currentJenkinsMasterPod.Status.Phase == corev1.PodSucceeded ||
|
currentJenkinsMasterPod.Status.Phase == corev1.PodSucceeded ||
|
||||||
currentJenkinsMasterPod.Status.Phase == corev1.PodUnknown {
|
currentJenkinsMasterPod.Status.Phase == corev1.PodUnknown {
|
||||||
r.logger.Info(fmt.Sprintf("Invalid Jenkins pod phase '%+v', recreating pod", currentJenkinsMasterPod.Status))
|
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 {
|
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))
|
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 &&
|
if len(r.jenkins.Spec.Master.Annotations) > 0 &&
|
||||||
!reflect.DeepEqual(r.jenkins.Spec.Master.Annotations, currentJenkinsMasterPod.ObjectMeta.Annotations) {
|
!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))
|
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) {
|
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",
|
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))
|
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) {
|
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",
|
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))
|
currentJenkinsMasterPod.Spec.NodeSelector, r.jenkins.Spec.Master.NodeSelector))
|
||||||
recreatePod = true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
requiredEnvs := resources.GetJenkinsMasterPodBaseEnvs()
|
requiredEnvs := resources.GetJenkinsMasterPodBaseEnvs()
|
||||||
|
|
@ -410,10 +413,10 @@ func (r *ReconcileJenkinsBaseConfiguration) isRecreatePodNeeded(currentJenkinsMa
|
||||||
if !reflect.DeepEqual(requiredEnvs, currentJenkinsMasterPod.Spec.Containers[0].Env) {
|
if !reflect.DeepEqual(requiredEnvs, currentJenkinsMasterPod.Spec.Containers[0].Env) {
|
||||||
r.logger.Info(fmt.Sprintf("Jenkins env have changed, actual '%+v' required '%+v' - recreating pod",
|
r.logger.Info(fmt.Sprintf("Jenkins env have changed, actual '%+v' required '%+v' - recreating pod",
|
||||||
currentJenkinsMasterPod.Spec.Containers[0].Env, requiredEnvs))
|
currentJenkinsMasterPod.Spec.Containers[0].Env, requiredEnvs))
|
||||||
recreatePod = true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
return recreatePod
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *ReconcileJenkinsBaseConfiguration) restartJenkinsMasterPod(meta metav1.ObjectMeta) error {
|
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,
|
NodeSelector: jenkins.Spec.Master.NodeSelector,
|
||||||
Containers: []corev1.Container{
|
Containers: []corev1.Container{
|
||||||
{
|
{
|
||||||
Name: "jenkins-master",
|
Name: "jenkins-master",
|
||||||
Image: jenkins.Spec.Master.Image,
|
Image: jenkins.Spec.Master.Image,
|
||||||
|
ImagePullPolicy: jenkins.Spec.Master.ImagePullPolicy,
|
||||||
Command: []string{
|
Command: []string{
|
||||||
"bash",
|
"bash",
|
||||||
fmt.Sprintf("%s/%s", jenkinsScriptsVolumePath, initScriptName),
|
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)
|
logger.Info("Setting default Jenkins master image: " + constants.DefaultJenkinsMasterImage)
|
||||||
changed = true
|
changed = true
|
||||||
jenkins.Spec.Master.Image = constants.DefaultJenkinsMasterImage
|
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 {
|
if len(jenkins.Spec.Master.OperatorPlugins) == 0 {
|
||||||
logger.Info("Setting default base plugins")
|
logger.Info("Setting default operator plugins")
|
||||||
changed = true
|
changed = true
|
||||||
jenkins.Spec.Master.OperatorPlugins = plugins.BasePlugins()
|
jenkins.Spec.Master.OperatorPlugins = plugins.BasePlugins()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue