Por lo tanto, estoy tratando de ejecutar Nexus en función de esta imagen en Kubernetes, pero falla con:
mkdir: cannot create directory '../sonatype-work/nexus3/log': Permission denied
mkdir: cannot create directory '../sonatype-work/nexus3/tmp': Permission denied
Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file ../sonatype-work/nexus3/log/jvm.log due to No such file or directory
De la documentación dice que el proceso se ejecuta con UID 200 y el volumen debe montarse con esos permisos:
A persistent directory, /nexus-data, is used for configuration,
logs, and storage. This directory needs to be writable by the Nexus
process, which runs as UID 200.
Intenté buscar en la documentación para encontrar una forma de montar el volumen con esos permisos, sin embargo, no pude encontrar ninguna manera de hacerlo.
¿Alguien sabe si puede especificar en la configuración para PVC / PV o Implementación qué UID para montar el volumen? ¿Si es así, cómo?
fuente
command: ["sh", "-c", "chmod 777 /nexus && chown 200:200 /nexus"]
para asegurarme de que la carpeta se pueda escribir.Como dijo Anton, aunque no podemos establecer el UID usando la definición de Pod. Aquí viene otra solución para este tema.
Consulte el documento oficial de Kubernetes Configurar un contexto de seguridad para un pod o contenedor
La definición de pod que utilicé:
La definición del servicio:
Y luego cree pod y servicio sin ningún permiso denegado u otros errores:
Intente iniciar sesión en el contenedor Nexus3 y verifique el propietario / permiso de / nexus-data:
Como puede ver, el directorio pertenece a root: nexus, y también puede verificar los archivos en el directorio:
Ese es el poder de SetGID :)
Ahora, verifiquemos si el servicio funciona o no. Uso minikube para ejecutar un clúster de kubernetes:
El servicio funciona como se esperaba.
fuente
Con respecto al comentario de Torsten Bronger , cuando configura ConfigMaps y Secrets en la matriz de volúmenes en la especificación del pod, puede especificar los permisos para permitir el acceso que desea utilizando la
defaultMode
propiedad, por lo que si bien no puede establecer la propiedad del grupo y del usuario, usted puede permitir que los procesos en el pod lean archivos en esos montajes. Escribir en un mapa secreto o de configuración realmente no tiene sentido y el modo de permiso predeterminado es 755 de todos modos, por lo que la lectura no debería ser un problema para ningún usuario.fuente