Ist es in Ordnung, einen Jenkins-Server ohne Slave-Knoten zu haben?

9

In meinem Team haben wir einen Jenkins-Server mit einem Master-Knoten und einem Slave-Knoten auf demselben Server. Wir verwenden Jenkins Pipelines und umgeben alles mit node{}.

Im Team eines Kollegen habe ich gesehen, dass sie aus irgendeinem Grund einen Masterknoten und keinen Slaveknoten haben . Alle ihre Builds werden im Masterknoten ausgeführt.

Fragen:

  • Ist das eine schlechte Praxis?
  • Gibt es schlimme Konsequenzen für nur einen Masterknoten?
  • Ist mein Setup (ein Master und ein Slave) eine schlechte Praxis?
Oscar Foley
quelle

Antworten:

12

https://wiki.jenkins.io/display/JENKINS/Jenkins+Best+Practices

Bauen Sie in größeren Systemen nicht auf dem Master auf.

Wenn Sie über ein komplexeres Sicherheits-Setup verfügen, mit dem einige Benutzer nur Jobs konfigurieren, Jenkins jedoch nicht verwalten können, müssen Sie verhindern, dass sie Builds auf dem Masterknoten ausführen. Andernfalls haben sie uneingeschränkten Zugriff auf das Verzeichnis JENKINS_HOME. Sie können dies tun, indem Sie die Anzahl der Executoren auf Null setzen. Stellen Sie stattdessen sicher, dass alle Jobs auf Slaves ausgeführt werden. Dies stellt sicher, dass der Jenkins-Master skaliert werden kann, um viel mehr Jobs zu unterstützen, und schützt Builds vor dem versehentlichen / böswilligen Ändern potenziell sensibler Daten auf $ JENKINS_HOME. Wenn Sie einige Jobs benötigen, um auf dem Master ausgeführt zu werden (z. B. Backups von Jenkins selbst), verwenden Sie das Plugin für Jobbeschränkungen, um zu begrenzen, welche Jobs dort ausgeführt werden können.


Ein Masterknoten und kein Slaveknoten. Alle ihre Builds werden im Masterknoten ausgeführt. Ist das eine schlechte Praxis?

Das Ausführen der Jobs auf den Masterknoten bedeutet, dass die Jobs uneingeschränkten Zugriff auf das Verzeichnis JENKINS_HOME haben

Gibt es schlimme Konsequenzen für nur einen Masterknoten?

Da die Slaves uneingeschränkten Zugriff auf das Verzeichnis JENKINS_HOME haben, kann dies unsicher sein

Ist mein Setup (ein Master und ein Slave) eine schlechte Praxis?

Es ist besser als nur ein Master, solange alle Jobs auf den Slaves ausgeführt werden


Zusammenfassend ist es aus Sicherheitsgründen eine schlechte Praxis, die Jobs auf dem Master auszuführen.

030
quelle
5

Es gibt einige Situationen, in denen das Ausführen von Jobs auf dem Masterknoten in Ordnung ist, aber Sie müssen vorsichtig sein. Wie bei der anderen erwähnten Antwort ist es im Allgemeinen eine schlechte Praxis, Jobs auf dem Master auszuführen, da die Jobs nicht auf dem Masterknoten in einer Sandbox gespeichert sind.

Abgesehen davon möchten Sie manchmal Jobs auf dem Masterknoten ausführen. Zum Beispiel sind zwei der Jobs in meiner Jenkins-Installation:

  • Suchen Sie nach Jobs, deren Abhängigkeiten aktualisiert wurden, und planen Sie Builds für sie anhand der neuen Versionen der Abhängigkeiten
  • Suchen Sie nach offenen Pull-Anforderungen, die noch nicht erstellt wurden, und planen Sie Builds für sie

Ich (als Jenkins-Administrator) habe die vollständige Kontrolle über diese Jobs. Keiner dieser Jobs berührt Dateien auf der Festplatte (es handelt sich im Wesentlichen um "Meta" -Jobs). Ich möchte, dass sie auch dann ausgeführt werden können, wenn alle Executor-Slots vorhanden sind Meine Slaves sind beschäftigt, und ich würde es vorziehen, wenn diese Jobs keine wichtigeren Jobs in der Warteschlange blockieren. Aus diesen Gründen erlaube ich diesen beiden Jobs - und nur diesen beiden Jobs -, auf dem Masterknoten ausgeführt zu werden.

jayhendren
quelle