Skip to content

Commit

Permalink
Merge pull request #74 from s-urbaniak/bz-1813221
Browse files Browse the repository at this point in the history
Bug 1813221: pkg/alertmanager: mergepatch alertmanager containers
  • Loading branch information
openshift-merge-robot committed Jun 19, 2020
2 parents b6601c8 + 847d66c commit ad8c9da
Showing 1 changed file with 53 additions and 46 deletions.
99 changes: 53 additions & 46 deletions pkg/alertmanager/statefulset.go
Expand Up @@ -468,7 +468,53 @@ func makeStatefulSetSpec(a *monitoringv1.Alertmanager, config Config) (*appsv1.S
terminationGracePeriod := int64(120)
finalLabels := config.Labels.Merge(podLabels)

// PodManagementPolicy is set to Parallel to mitigate issues in kuberentes: https://github.com/kubernetes/kubernetes/issues/60164
defaultContainers := []v1.Container{
{
Args: amArgs,
Name: "alertmanager",
Image: image,
Ports: ports,
VolumeMounts: amVolumeMounts,
LivenessProbe: livenessProbe,
ReadinessProbe: readinessProbe,
Resources: a.Spec.Resources,
Env: []v1.EnvVar{
{
// Necessary for '--cluster.listen-address' flag
Name: "POD_IP",
ValueFrom: &v1.EnvVarSource{
FieldRef: &v1.ObjectFieldSelector{
FieldPath: "status.podIP",
},
},
},
},
TerminationMessagePolicy: v1.TerminationMessageFallbackToLogsOnError,
}, {
Name: "config-reloader",
Image: config.ConfigReloaderImage,
Args: []string{
fmt.Sprintf("-webhook-url=%s", localReloadURL),
fmt.Sprintf("-volume-dir=%s", alertmanagerConfDir),
},
VolumeMounts: []v1.VolumeMount{
{
Name: "config-volume",
ReadOnly: true,
MountPath: alertmanagerConfDir,
},
},
Resources: resources,
TerminationMessagePolicy: v1.TerminationMessageFallbackToLogsOnError,
},
}

containers, err := k8sutil.MergePatchContainers(defaultContainers, a.Spec.Containers)
if err != nil {
return nil, errors.Wrap(err, "failed to merge containers spec")
}

// PodManagementPolicy is set to Parallel to mitigate issues in kubernetes: https://github.com/kubernetes/kubernetes/issues/60164
// This is also mentioned as one of limitations of StatefulSets: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#limitations
return &appsv1.StatefulSetSpec{
ServiceName: governingServiceName,
Expand All @@ -490,51 +536,12 @@ func makeStatefulSetSpec(a *monitoringv1.Alertmanager, config Config) (*appsv1.S
PriorityClassName: a.Spec.PriorityClassName,
TerminationGracePeriodSeconds: &terminationGracePeriod,
InitContainers: a.Spec.InitContainers,
Containers: append([]v1.Container{
{
Args: amArgs,
Name: "alertmanager",
Image: image,
Ports: ports,
VolumeMounts: amVolumeMounts,
LivenessProbe: livenessProbe,
ReadinessProbe: readinessProbe,
Resources: a.Spec.Resources,
Env: []v1.EnvVar{
{
// Necessary for '--cluster.listen-address' flag
Name: "POD_IP",
ValueFrom: &v1.EnvVarSource{
FieldRef: &v1.ObjectFieldSelector{
FieldPath: "status.podIP",
},
},
},
},
TerminationMessagePolicy: v1.TerminationMessageFallbackToLogsOnError,
}, {
Name: "config-reloader",
Image: config.ConfigReloaderImage,
Args: []string{
fmt.Sprintf("-webhook-url=%s", localReloadURL),
fmt.Sprintf("-volume-dir=%s", alertmanagerConfDir),
},
VolumeMounts: []v1.VolumeMount{
{
Name: "config-volume",
ReadOnly: true,
MountPath: alertmanagerConfDir,
},
},
Resources: resources,
TerminationMessagePolicy: v1.TerminationMessageFallbackToLogsOnError,
},
}, a.Spec.Containers...),
Volumes: volumes,
ServiceAccountName: a.Spec.ServiceAccountName,
SecurityContext: securityContext,
Tolerations: a.Spec.Tolerations,
Affinity: a.Spec.Affinity,
Containers: containers,
Volumes: volumes,
ServiceAccountName: a.Spec.ServiceAccountName,
SecurityContext: securityContext,
Tolerations: a.Spec.Tolerations,
Affinity: a.Spec.Affinity,
},
},
}, nil
Expand Down

0 comments on commit ad8c9da

Please sign in to comment.