'Mounting Kubernetes config map as single file returns error: "caused: mount through procfd: not a directory: unknown"

This is my pod:

spec:
  containers:
    volumeMounts:
    - mountPath: /etc/configs/config.tmpl
      name: config-main
      readOnly: true
      subPath: config.tmpl
  volumes:
  - configMap:
      defaultMode: 420
      name: config-main
    name: config-main

This is my config map:

apiVersion: v1
kind: ConfigMap
metadata:
  name: config-main
data:
  config.tmpl: |
        # here goes my config content

This produces the following error:

Error: failed to create containerd task: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: rootfs_linux.go:76: mounting "/var/lib/kubelet/pods/dc66ebd1-90ef-4c25-bb69-4b3329f61a5a/volume-subpaths/config-main/podname/1" to rootfs at "/etc/configs/config.tmpl" caused: mount through procfd: not a directory: unknown

The container has pre-existing /etc/configs/config.tmpl file that I want to override



Solution 1:[1]

To mount as file instead of directory try:

spec:
  containers:
    volumeMounts:
    - mountPath: /etc/configs/config.tmpl
      name: config-main
      readOnly: true
      subPath: config.tmpl
  volumes:
  - configMap:
      defaultMode: 420
      items:
      - key: config.tmpl
        path: config.tmpl
      name: config-main
    name: config-main

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 gohm'c