Ich versuche, Nexus basierend auf diesem Image in Kubernetes zum Laufen zu bringen , aber es schlägt fehl mit:
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
Aus der Dokumentation geht hervor, dass der Prozess mit der UID 200 ausgeführt wird und das Volume mit den folgenden Berechtigungen bereitgestellt werden muss:
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.
Ich habe versucht, in der Dokumentation nach einer Möglichkeit zu suchen, das Volume mit diesen Berechtigungen bereitzustellen. Ich konnte jedoch keine Möglichkeit finden, dies zu tun.
Weiß jemand, ob Sie in der Konfiguration für die PVC / PV oder die Bereitstellung angeben können, mit welcher UID das Volume gemountet werden soll? Wenn das so ist, wie?
quelle
command: ["sh", "-c", "chmod 777 /nexus && chown 200:200 /nexus"]
um sicherzustellen, dass der Ordner beschreibbar ist.Wie Anton sagte, obwohl wir die UID nicht mit der Definition von Pod einstellen können. Hier kommt eine weitere Problemumgehung für dieses Thema.
Bitte beziehen Sie sich auf das offizielle Dokument von Kubernetes Informationen finden Konfigurieren Sie einen Sicherheitskontext für einen Pod oder Container
Die Pod-Definition, die ich verwendet habe:
Die Service-Definition:
Erstellen Sie anschließend einen Pod und einen Service ohne abgelehnte Erlaubnis oder andere Fehler:
Versuchen Sie, sich im Nexus3-Container anzumelden und überprüfen Sie den Eigentümer / die Erlaubnis von / nexus-data:
Wie Sie sehen, gehört das Verzeichnis zu root: nexus, und Sie können auch die Dateien im Verzeichnis überprüfen:
Das ist die Kraft von SetGID :)
Lassen Sie uns nun überprüfen, ob der Dienst funktioniert oder nicht. Ich verwende minikube, um ein kubernetes Cluster auszuführen:
Der Service funktioniert wie erwartet.
quelle
In Bezug auf Torsten Bronger ‚s Kommentar , wenn Sie ConfigMaps und Geheimnisse im Volumen Array in der Schote spec konfigurieren, können Sie die Berechtigungen festlegen , den Zugriff Sie wollen , damit mit
defaultMode
Eigentum, also , während Sie nicht Set Gruppen- und Benutzer Eigentum können Sie Mit dieser Option können Prozesse im Pod Dateien in diesen Bereitstellungen lesen. Das Schreiben in eine geheime oder Konfigurations-Map ist nicht wirklich sinnvoll und der Standard-Berechtigungsmodus ist ohnehin 755, so dass das Lesen für keinen Benutzer ein Problem sein sollte.quelle