Wie kann ich den PHP-FPM-Masterprozess als Nicht-Root-Benutzer ausführen?

Wie kann ich den PHP-FPM-Masterprozess als Nicht-Root-Benutzer ausführen?

Ich versuche, ein rootloses PHP-FPM-Pod zu erreichen, das in Kubernetes ausgeführt wird.

Ich habe versucht, den Prozess einfach im Kubernetes-Pod über ein Init-Skript auszuführen, das php-fpm -FOals www-dataBenutzer ausgeführt wird, aber es beschwert sich, keine Zugriffsberechtigungen zu haben /dev/stderr(Speicherort der Protokollausgabe). Das Hinzufügen www-datades Benutzers zur ttyGruppe hat auch nicht geholfen.

Ich habe versucht, einen anderen Speicherort anzugeben, beispielsweise /proc/self/fd/2oder sogar /dev/pts/1als Protokollspeicherort, aber ohne Erfolg.

Das Lustige ist: Wenn ich docker run -itd app:latest su -l www-data -s /bin/sh -c php-fpm -FO &im Grunde denselben Startbefehl direkt über Docker ausführe, startet es und funktioniert einwandfrei.

Ich habe in Kubernetes keine securityContextKonfiguration, die den normalen Start des Prozesses beeinträchtigen könnte.

Irgendwelche Vorschläge/Ideen, die ich ausprobieren könnte?

Antwort1

Wenn derselbe Fehler bei verschiedenen öffentlichen Apps auftritt, kann dies auf ein Problem mit GKE hinweisen. Sie können es melden überProblemverfolgung.
Wenn dieser Fehler spezifisch für diese App ist, ziehen Sie einen anderen Protokollierungsaggregator in Betracht, zum Beispiel denBeiwagenmuster.
Weitere Informationen zum Logging in GKE finden Sie hierdokumentieren.
Wenn Sie cOS mit Docker verwenden, sollten Sie außerdem auf die Containerd-Version umsteigen, da erstereveraltet.

verwandte Informationen