¿Está bien tener un servidor Jenkins sin nodo esclavo?

9

En mi equipo tenemos un servidor Jenkins con un nodo maestro y un nodo esclavo en el mismo servidor. Usamos Jenkins Pipelines y rodeamos todo con node{}.

En el equipo de un colega, he visto que, por alguna razón, tienen un nodo maestro y ningún nodo esclavo . Todas sus compilaciones se ejecutan en el nodo maestro.

Preguntas:

  • ¿Es esta una mala práctica?
  • ¿Hay alguna mala consecuencia por tener solo un nodo maestro?
  • ¿Es mi configuración (un maestro y un esclavo) una mala práctica?
Oscar Foley
fuente

Respuestas:

12

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

En sistemas más grandes, no construyas sobre el maestro.

Si tiene una configuración de seguridad más compleja que permite que algunos usuarios solo configuren trabajos, pero no administren Jenkins, debe evitar que ejecuten compilaciones en el nodo maestro, de lo contrario, tendrán acceso sin restricciones al directorio JENKINS_HOME. Puede hacerlo estableciendo el conteo del ejecutor en cero. En cambio, asegúrese de que todos los trabajos se ejecuten en esclavos. Esto garantiza que el maestro jenkins pueda escalar para admitir muchos más trabajos, y también protege las compilaciones de la modificación de datos potencialmente confidenciales en $ JENKINS_HOME accidental / maliciosamente. Si necesita ejecutar algunos trabajos en el maestro (por ejemplo, copias de seguridad de Jenkins), use el complemento Restricciones de trabajos para limitar qué trabajos se pueden ejecutar allí.


Un nodo maestro y ningún nodo esclavo. Todas sus compilaciones se ejecutan en el nodo maestro. ¿Es esta una mala práctica?

La ejecución de los trabajos en los nodos maestros significa que los trabajos tienen acceso sin restricciones al directorio JENKINS_HOME

¿Hay alguna mala consecuencia por tener solo un nodo maestro?

Como los esclavos tienen acceso ilimitado al directorio JENKINS_HOME, esto podría no ser seguro

¿Es mi configuración (un maestro y un esclavo) una mala práctica?

Es mejor que un solo maestro siempre que todos los trabajos se ejecuten en los esclavos.


En resumen, desde una perspectiva de seguridad, es una mala práctica ejecutar los trabajos en el maestro.

030
fuente
5

Hay algunas situaciones en las que ejecutar trabajos en el nodo maestro está bien, pero debe tener cuidado. Al igual que la otra respuesta mencionada, en general, ejecutar trabajos en el maestro es una mala práctica, ya que los trabajos no están protegidos en el nodo maestro.

Dicho esto, a veces desea ejecutar trabajos en el nodo maestro. Por ejemplo, dos de los trabajos en mi instalación de Jenkins son:

  • encuentre trabajos cuyas dependencias se hayan actualizado y programe compilaciones para ellos contra las nuevas versiones de las dependencias
  • encuentre solicitudes de extracción abiertas que aún no se hayan creado y programe compilaciones para ellas

Yo (como administrador de Jenkins) tengo el control total de estos trabajos, ninguno de estos trabajos particulares toca ningún archivo en el disco (son esencialmente trabajos "meta"), quiero que puedan ejecutarse incluso cuando todas las ranuras del ejecutor en mis esclavos están ocupados, y preferiría que estos trabajos no bloqueen trabajos más importantes en la cola. Por estas razones, permito que estos dos trabajos, y solo estos dos trabajos, se ejecuten en el nodo maestro.

jayhendren
fuente