RabbitMQ configuration files is not coping in the Kubernetes deployment

10/22/2019

I'm trying to deploy RabbitMQ on the Kubernetes cluster and using the initcontainer to copy a file from ConfigMap. However, the file is not copying after POD is in a running state.

Initially, I have tried without using an initcontainer, but I was getting an error like "touch: cannot touch '/etc/rabbitmq/rabbitmq.conf': Read-only file system."

kind: Deployment
metadata:
  name: broker01
  namespace: s2sdocker
  labels:
    app: broker01
spec:
  replicas: 1
  selector:
    matchLabels:
      app: broker01
  template:
   metadata:
     name: broker01
     labels:
       app: broker01
   spec:
     initContainers:
      - name: configmap-copy
        image: busybox
        command: ['/bin/sh', '-c', 'cp /etc/rabbitmq/files/definitions.json /etc/rabbitmq/']
        volumeMounts:
          - name: broker01-definitions
            mountPath: /etc/rabbitmq/files
          - name: pre-install
            mountPath: /etc/rabbitmq

     containers:
      - name: broker01
        image: rabbitmq:3.7.17-management
        envFrom:
          - configMapRef:
              name: broker01-rabbitmqenv-cm
        ports:
        volumeMounts:
          - name: broker01-data
            mountPath: /var/lib/rabbitmq
          - name: broker01-log
            mountPath: /var/log/rabbitmq/log
          - name: broker01-definitions
            mountPath: /etc/rabbitmq/files
     volumes:
       - name: pre-install
         emptyDir: {}
       - name: broker01-data
         persistentVolumeClaim:
           claimName: broker01-data-pvc
       - name: broker01-log
         persistentVolumeClaim:
           claimName: broker01-log-pvc
       - name: broker01-definitions
         configMap:
            name: broker01-definitions-cm

The file "definitions.json" should be copied to /etc/reabbitmq folder. I have followed "Kubernetes deployment read-only filesystem error". But issue did not fix.

-- ratnakar
kubernetes
rabbitmq

2 Answers

10/22/2019

can you check permissions on /etc/rabbitmq/. does the user has permission to copy the file to above location?

      - name: pre-install
        mountPath: /etc/rabbitmq

I see that /etc/rabbitmq is a mount point. it is a ready only file system and hence the file copy is failed.

can you update the permissions on 'pre-install' mount point

-- P Ekambaram
Source: StackOverflow

10/25/2019

After making changes in the "containers volumeMount section," I was able to copy the file on to /etc/rabbitmq folder.

Please find a modified code here.

      - name: broker01
        image: rabbitmq:3.7.17-management
        envFrom:
          - configMapRef:
              name: broker01-rabbitmqenv-cm
        ports:
        volumeMounts:
          - name: broker01-data
            mountPath: /var/lib/rabbitmq
          - name: broker01-log
            mountPath: /var/log/rabbitmq/log
          - name: pre-install
            mountPath: /etc/rabbitmq
-- ratnakar
Source: StackOverflow