Skip to content

Commit a650146

Browse files
committed
Change group owner of mnesia dir to 999
Relates to #234 Otherwise, the RabbitMQ process can't write the pid file into the /var/lib/rabbitmq/mnesia/ directory on OpenShift due to permissions denied. Before this commit, mnesia dir was owned by user root and group root. On OpenShift, mnesia did not have rwx bits for everyone due to stricter security constraints: drwxrwx---. 2 root root 6 Aug 20 10:03 mnesia
1 parent ccb5a4f commit a650146

File tree

2 files changed

+48
-15
lines changed

2 files changed

+48
-15
lines changed

internal/resource/statefulset.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -494,15 +494,30 @@ func (builder *StatefulSetBuilder) podTemplateSpec(annotations, labels map[strin
494494
{
495495
Name: "copy-config",
496496
Image: builder.Instance.Spec.Image,
497+
SecurityContext: &corev1.SecurityContext{
498+
RunAsUser: pointer.Int64Ptr(0),
499+
Capabilities: &corev1.Capabilities{
500+
Drop: []corev1.Capability{
501+
// Remove default capabilities allowed by Docker except for CHOWN and FOWNER
502+
"SETPCAP", "MKNOD", "AUDIT_WRITE", "NET_RAW", "DAC_OVERRIDE", "FSETID",
503+
"KILL", "SETGID", "SETUID", "NET_BIND_SERVICE", "SYS_CHROOT", "SETFCAP",
504+
},
505+
},
506+
},
497507
Command: []string{
498-
"sh", "-c", "cp /tmp/rabbitmq/rabbitmq.conf /etc/rabbitmq/rabbitmq.conf && echo '' >> /etc/rabbitmq/rabbitmq.conf ; " +
499-
"cp /tmp/rabbitmq/advanced.config /etc/rabbitmq/advanced.config ; " +
500-
"cp /tmp/rabbitmq/rabbitmq-env.conf /etc/rabbitmq/rabbitmq-env.conf ; " +
508+
"sh", "-c", "cp /tmp/rabbitmq/rabbitmq.conf /etc/rabbitmq/rabbitmq.conf " +
509+
"&& chown 999:999 /etc/rabbitmq/rabbitmq.conf " +
510+
"&& echo '' >> /etc/rabbitmq/rabbitmq.conf ; " +
511+
"cp /tmp/rabbitmq/advanced.config /etc/rabbitmq/advanced.config " +
512+
"&& chown 999:999 /etc/rabbitmq/advanced.config ; " +
513+
"cp /tmp/rabbitmq/rabbitmq-env.conf /etc/rabbitmq/rabbitmq-env.conf " +
514+
"&& chown 999:999 /etc/rabbitmq/rabbitmq-env.conf ; " +
501515
"cp /tmp/erlang-cookie-secret/.erlang.cookie /var/lib/rabbitmq/.erlang.cookie " +
502516
"&& chown 999:999 /var/lib/rabbitmq/.erlang.cookie " +
503517
"&& chmod 600 /var/lib/rabbitmq/.erlang.cookie ; " +
504518
"cp /tmp/rabbitmq-plugins/enabled_plugins /etc/rabbitmq/enabled_plugins " +
505-
"&& chown 999:999 /etc/rabbitmq/enabled_plugins",
519+
"&& chown 999:999 /etc/rabbitmq/enabled_plugins ; " +
520+
"chgrp 999 /var/lib/rabbitmq/mnesia/",
506521
},
507522
Resources: corev1.ResourceRequirements{
508523
Limits: map[corev1.ResourceName]k8sresource.Quantity{
@@ -535,6 +550,10 @@ func (builder *StatefulSetBuilder) podTemplateSpec(annotations, labels map[strin
535550
Name: "erlang-cookie-secret",
536551
MountPath: "/tmp/erlang-cookie-secret/",
537552
},
553+
{
554+
Name: "persistence",
555+
MountPath: "/var/lib/rabbitmq/mnesia/",
556+
},
538557
},
539558
},
540559
},

internal/resource/statefulset_test.go

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -941,19 +941,24 @@ var _ = Describe("StatefulSet", func() {
941941
Expect(stsBuilder.Update(statefulSet)).To(Succeed())
942942

943943
initContainers := statefulSet.Spec.Template.Spec.InitContainers
944-
Expect(len(initContainers)).To(Equal(1))
944+
Expect(initContainers).To(HaveLen(1))
945945

946946
container := extractContainer(initContainers, "copy-config")
947-
Expect(container.Command).To(Equal([]string{
948-
"sh", "-c", "cp /tmp/rabbitmq/rabbitmq.conf /etc/rabbitmq/rabbitmq.conf && echo '' >> /etc/rabbitmq/rabbitmq.conf ; " +
949-
"cp /tmp/rabbitmq/advanced.config /etc/rabbitmq/advanced.config ; " +
950-
"cp /tmp/rabbitmq/rabbitmq-env.conf /etc/rabbitmq/rabbitmq-env.conf ; " +
951-
"cp /tmp/erlang-cookie-secret/.erlang.cookie /var/lib/rabbitmq/.erlang.cookie " +
952-
"&& chown 999:999 /var/lib/rabbitmq/.erlang.cookie " +
953-
"&& chmod 600 /var/lib/rabbitmq/.erlang.cookie ; " +
954-
"cp /tmp/rabbitmq-plugins/enabled_plugins /etc/rabbitmq/enabled_plugins " +
955-
"&& chown 999:999 /etc/rabbitmq/enabled_plugins",
956-
}))
947+
Expect(container.Command).To(ConsistOf(
948+
"sh", "-c", "cp /tmp/rabbitmq/rabbitmq.conf /etc/rabbitmq/rabbitmq.conf "+
949+
"&& chown 999:999 /etc/rabbitmq/rabbitmq.conf "+
950+
"&& echo '' >> /etc/rabbitmq/rabbitmq.conf ; "+
951+
"cp /tmp/rabbitmq/advanced.config /etc/rabbitmq/advanced.config "+
952+
"&& chown 999:999 /etc/rabbitmq/advanced.config ; "+
953+
"cp /tmp/rabbitmq/rabbitmq-env.conf /etc/rabbitmq/rabbitmq-env.conf "+
954+
"&& chown 999:999 /etc/rabbitmq/rabbitmq-env.conf ; "+
955+
"cp /tmp/erlang-cookie-secret/.erlang.cookie /var/lib/rabbitmq/.erlang.cookie "+
956+
"&& chown 999:999 /var/lib/rabbitmq/.erlang.cookie "+
957+
"&& chmod 600 /var/lib/rabbitmq/.erlang.cookie ; "+
958+
"cp /tmp/rabbitmq-plugins/enabled_plugins /etc/rabbitmq/enabled_plugins "+
959+
"&& chown 999:999 /etc/rabbitmq/enabled_plugins ; "+
960+
"chgrp 999 /var/lib/rabbitmq/mnesia/",
961+
))
957962

958963
Expect(container.VolumeMounts).To(ConsistOf(
959964
corev1.VolumeMount{
@@ -977,9 +982,18 @@ var _ = Describe("StatefulSet", func() {
977982
Name: "erlang-cookie-secret",
978983
MountPath: "/tmp/erlang-cookie-secret/",
979984
},
985+
corev1.VolumeMount{
986+
Name: "persistence",
987+
MountPath: "/var/lib/rabbitmq/mnesia/",
988+
},
980989
))
981990

982991
Expect(container.Image).To(Equal("rabbitmq-image-from-cr"))
992+
Expect(container.SecurityContext.RunAsUser).To(Equal(pointer.Int64Ptr(0)))
993+
Expect(container.SecurityContext.Capabilities.Drop).To(ConsistOf([]corev1.Capability{
994+
"SETPCAP", "MKNOD", "AUDIT_WRITE", "NET_RAW", "DAC_OVERRIDE", "FSETID",
995+
"KILL", "SETGID", "SETUID", "NET_BIND_SERVICE", "SYS_CHROOT", "SETFCAP",
996+
}))
983997
})
984998

985999
It("adds the required terminationGracePeriodSeconds", func() {

0 commit comments

Comments
 (0)