Search code examples
kuberneteskubernetes-helm

Bash script mounted as configmap with 777 permissions cannot be ran


This might be simple, but I can't seem to figure out why a bash script mounted as a configmap cannot be ran as root:

root@myPodId:/opt/nodejs-app# ls -alh /path/fileName 
lrwxrwxrwx 1 root root 18 Sep 10 09:33 /path/fileName  -> ..data/fileName

root@myPodId:/opt/nodejs-app# whoami
root

root@myPodId:/opt/nodejs-app# /bin/bash -c /path/fileName
/bin/bash: /path/fileName: Permission denied

I'm guessing, but I'd think that as with Docker, the root in the container isn't the actual root and works more like a pseudo-root account.

If that's the case, and the file cannot be ran this way, how would you include the script without having to re-create the Docker container every time the script changes?


Solution

  • See here: https://github.com/kubernetes/kubernetes/issues/71356#issuecomment-441169334

    You need to set the defaultMode on the ConfigMap to the permissions you are asking for:

    volumes:
    - name: test-script
      configMap:
        name: test-script
        defaultMode: 0777