0

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
  • 71
  • 1
  • 8
  • Will be nice to see broker01-definitions-cm config map defenition – ozlevka Oct 22 '19 at 12:31
  • I'm trying to convert docker-compose file to Kubernetes. Here is docker-compose file synatx. ```broker01: image: rabbitmq:3.7.17-management env_file: - broker/rabbitmq01/conf/rabbitmq.env networks: - private volumes: - ./broker/rabbitmq01/data:/var/lib/rabbitmq - ./broker/rabbitmq01/conf/definitions.json:/etc/rabbitmq/definitions.json - ./broker/rabbitmq01/log:/var/log/rabbitmq/log dns_search: . restart: always ``` – ratnakar Oct 22 '19 at 12:37
  • the file is too big to add here and exceeding the char limit. – ratnakar Oct 22 '19 at 12:45

2 Answers2

1

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
  • 71
  • 1
  • 8
0

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
  • 15,499
  • 7
  • 34
  • 59
  • ```/# ls -ld /etc/ /etc/rabbitmq/ drwxr-xr-x. 1 root root 22 Oct 22 11:52 /etc/ drwxrwxrwx. 1 rabbitmq rabbitmq 40 Oct 22 11:52 /etc/rabbitmq/ # ``` – ratnakar Oct 22 '19 at 12:27
  • Could you please guide me on how to do it? Is it something with chmod command in the initcontainer? – ratnakar Oct 22 '19 at 14:29