Question - Eramba deployed through Helm

Has anyone deployed Eramba on a Kubernetes cluster? I have used the ‘kompose’ utility to convert the docker-compose file to a helm chart (https://kompose.io/) and I am able to get mysql and redis running, but the eramba container and the cron jobs I am struggling with.

Error I am now getting:

Error: failed to create containerd task: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/var/lib/kubelet/pods/f46c04b4-e17b-4b31-a28a-54de4e407dbc/volume-subpaths/000-default-conf/eramba/6" to rootfs at "/etc/apache2/sites-available/000-default.conf": mount /var/lib/kubelet/pods/f46c04b4-e17b-4b31-a28a-54de4e407dbc/volume-subpaths/000-default-conf/eramba/6:/etc/apache2/sites-available/000-default.conf (via /proc/self/fd/6), flags: 0x5001: not a directory: unknown

I am using a configMap to mount the conf file into the container but the /etc directory seems to be ‘unknown’.

I have all the files loaded and volumes mounting. Now when the eramba image attempts to initialize the database it fails.

  1. How does it get the DB_HOST, DB_PASSWORD values when the PHP script kicks off?
  2. All the values are loaded into the environment from the .env file using the Helm chart but it can’t seem to see them.

Helm chart I am using

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert -c -f docker-compose.simple-install.yml
    kompose.version: 1.28.0 (HEAD)
  creationTimestamp: null
  labels:
    io.kompose.service: psea-eramba
  name: psea-eramba
spec:
  replicas: 1
  selector:
    matchLabels:
      io.kompose.service: psea-eramba
  strategy:
    type: Recreate
  template:
    metadata:
      annotations:
        kompose.cmd: kompose convert -c -f docker-compose.simple-install.yml
        kompose.version: 1.28.0 (HEAD)
      creationTimestamp: null
      labels:
        io.kompose.network/docker-default: "true"
        io.kompose.service: psea-eramba
    spec:
      containers:
        - env:
            - name: CACHE_URL
              value: "Redis://?server=psea-redis&port=6379&password=&timeout=3"
            - name: DB_DATABASE
              value: pseaeramba
            - name: DB_HOST
              value: psea-mysql
            - name: DB_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: pseaerambadbpass
                  key: password
            - name: DB_USERNAME
              value: pseaeramba
            - name: DOCKER_DEPLOYMENT
              value: "1"
            - name: LDAPTLS_REQCERT
              value: "never"
            - name: PROXY_AUTH_PASS
              value: ${PROXY_AUTH_PASS}
            - name: PROXY_AUTH_USER
              value: ${PROXY_AUTH_USER}
            - name: PROXY_HOST
              value: ${PROXY_HOST}
            - name: PROXY_PORT
              value: ${PROXY_PORT}
            - name: PUBLIC_ADDRESS
              value: "https://psea.fideseo.com:8443"
            - name: USE_PROXY
              value: "0"
            - name: USE_PROXY_AUTH
              value: "0"
          image: ghcr.io/eramba/eramba:latest
          name: psea-eramba
          ports:
            - containerPort: 8443
              name: psea-eramba
          resources: {}
      volumeMounts:
        - mountPath: /var/www/eramba/app/upgrade/data
          name: data
        - mountPath: /var/www/eramba
          name: app
        - mountPath: /var/www/eramba/app/upgrade/logs
          name: logs
        - name: mycert-crt
          mountPath: /etc/ssl/certs  
        - name: mycert-key
          mountPath: /etc/ssl/private
        - name: security-conf
          mountPath: /etc/apache2/conf-available
        - name: 000-default-conf
          mountPath: /etc/apache2/sites-available
        - name: eramba-crontab
          mountPath: /etc/cron.d
        - name: docker-cron-entrypoint
          mountPath: /
        - name: docker-entrypoint
          mountPath: /
      restartPolicy: Always
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: data
        - name: app
          persistentVolumeClaim:
            claimName: app
        - name: logs
          persistentVolumeClaim:
            claimName: logs
        - name: mycert-crt
          configMap: 
            name: psea-crt
            items:
              - key: mycert.crt
                path: mycert.crt
        - name: mycert-key
          configMap: 
            name: psea-key
            items:
              - key: mycert.key
                path: mycert.key
        - name: security-conf
          configMap:
            name: psea-securityconf
            items:
              - key: security.conf
                path: security.conf
        - name: 000-default-conf
          configMap: 
            name: psea-000-default-conf
            items:
              - key: 000-default.conf
                path: 000-default.conf
        - name: eramba-crontab
          configMap: 
            name: psea-eramba-crontab
            items:
              - key: eramba-crontab
                path: eramba-crontab
        - name: docker-cron-entrypoint
          configMap:
            name: docker-cron-entrypoint.sh
            items:
              - key: docker-cron-entrypoint.sh
                path: docker-cron-entrypoint.sh
        - name: docker-entrypoint
          configMap:
            name: docker-entrypoint.sh
            items:
              - key: docker-entrypoint.sh
                path: docker-entrypoint.sh
status: {}

I FIGURED IT OUT!!! @kisero

1 Like

well done! i have no clue how to do that!

What could be the cause of this error in the container:

sent 19 bytes  received 12 bytes  62.00 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1333) [sender=3.2.3]
Could not open input file: app/upgrade/bin/cake.php

Is that not quite figured out then? I’d dearly love to know whether Eramba can run on GKE.

Hello @nick.yonko can you describe what was achieved in order to get it working in a cluster?