Saltar al contenido

Kubernetes: cómo configurar los permisos de archivos y grupos de usuarios de VolumeMount

Por fin luego de tanto trabajar pudimos hallar la contestación de este atascamiento que algunos de nuestros usuarios de este sitio web presentan. Si tienes alguna información que compartir no dejes de dejar tu información.

El contexto de seguridad del pod admite la configuración de un fsGroup, que le permite establecer el ID de grupo propietario del volumen y, por lo tanto, quién puede escribir en él. El ejemplo en los documentos:

apiVersion: v1
kind: Pod
metadata:
  name: hello-world
spec:
  containers:
  # specification of the pod's containers
  # ...
  securityContext:
    fsGroup: 1234

Más información sobre esto está aquí

terminé con un initContainer con el mismo volumeMount como contenedor principal para establecer los permisos adecuados, en mi caso, para una imagen personalizada de Grafana.

Esto es necesario cuando un contenedor en un pod se ejecuta como un usuario que no sea root y necesita permisos de escritura en un volumen montado.

initContainers:
- name: take-data-dir-ownership
  image: alpine:3
  # Give `grafana` user (id 472) permissions a mounted volume
  # https://github.com/grafana/grafana-docker/blob/master/Dockerfile
  command:
  - chown
  - -R
  - 472:472
  - /var/lib/grafana
  volumeMounts:
  - name: data
    mountPath: /var/lib/grafana
  • https://kubernetes.io/docs/concepts/workloads/pods/init-containers/

Esto se presentó como uno de los desafíos para las implementaciones/StatefulSets de Kubernetes, cuando tiene que ejecutar procesos dentro de un contenedor como usuario no raíz. Pero, cuando monta un volumen en un pod, siempre se monta con el permiso de root:root.

Por lo tanto, el usuario no root debe tener acceso a la carpeta donde desea leer y escribir datos.

Siga los pasos a continuación para lo mismo.

  1. Cree un grupo de usuarios y asigne una ID de grupo en Dockerfile.
  2. Cree un usuario con ID de usuario y agréguelo al grupo en Dockerfile.
  3. cambiar la propiedad de forma recursiva para las carpetas que el proceso de usuario desea leer/escribir.
  4. Agregue las siguientes líneas en Deployment/StatefulSet en pod spec contexto.

    spec:
      securityContext:
        runAsUser: 1099
        runAsGroup: 1099
        fsGroup: 1099
    

ejecutar como usuario

Especifica que para cualquier Contenedor en el Pod, todos los procesos se ejecutan con el ID de usuario 1099.

ejecutar como grupo

Especifica el ID de grupo principal de 1099 para todos los procesos dentro de cualquier contenedor del Pod.

Si se omite este campo, el ID de grupo primario de los contenedores será root(0).

Cualquier archivo creado también será propiedad del usuario 1099 y del grupo 1099 cuando runAsGroup está especificado.

fsGrupo

Especifica que el propietario de cualquier volumen adjunto será el propietario del ID de grupo 1099.

Cualquier archivo creado bajo él tendrá permiso de nonrootgroup:nonrootgroup.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *