Donc, j'essaie de faire fonctionner Nexus à partir de cette image dans Kubernetes, mais cela échoue avec:
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
D'après la documentation, il est indiqué que le processus s'exécute avec l'UID 200 et que le volume doit être monté avec ces autorisations:
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.
J'ai essayé de parcourir la documentation pour trouver un moyen de monter le volume avec ces autorisations, mais je n'ai trouvé aucun moyen de le faire.
Est-ce que quelqu'un sait si vous pouvez spécifier dans la configuration pour le PVC / PV ou le déploiement avec quel UID pour monter le volume? Si c'est le cas, comment?
la source
command: ["sh", "-c", "chmod 777 /nexus && chown 200:200 /nexus"]
pour m'assurer que le dossier est accessible en écriture.Comme Anton l'a dit, bien que nous ne puissions pas définir l'UID en utilisant la définition de Pod. Voici une autre solution de contournement pour ce sujet.
Veuillez vous référer au document officiel de Kubernetes Configurer un contexte de sécurité pour un pod ou un conteneur
La définition de pod que j'ai utilisée:
La définition du service:
Et puis créez un pod et un service sans autorisation refusée ou autres erreurs:
Essayez de vous connecter au conteneur Nexus3 et vérifiez le propriétaire / l'autorisation de / nexus-data:
Comme vous pouvez le voir, le répertoire appartient à root: nexus, et vous pouvez également vérifier les fichiers dans le répertoire:
C'est la puissance de SetGID :)
Vérifions maintenant que le service fonctionne ou non. J'utilise minikube pour exécuter un cluster kubernetes:
Le service fonctionne comme prévu.
la source
En ce qui concerne le commentaire de Torsten Bronger , lorsque vous configurez ConfigMaps et Secrets dans le tableau des volumes dans la spécification de pod, vous pouvez spécifier les autorisations pour autoriser l'accès que vous souhaitez utiliser à l'aide de la
defaultMode
propriété, donc même si vous ne pouvez pas définir la propriété du groupe et de l'utilisateur, vous peut permettre aux processus du pod de lire les fichiers de ces montages. L'écriture sur une carte secrète ou de configuration n'a pas vraiment de sens et le mode d'autorisation par défaut est 755 de toute façon, donc la lecture ne devrait pas être un problème pour tout utilisateur.la source