Nuestros investigadores estrellas han agotado sus provisiones de café, buscando a tiempo completo por la respuesta, hasta que Miriam halló la solución en Gitea así que hoy la compartimos aquí.
Solución:
Solo quiero agregar un poco más de explicación a las respuestas anteriores para los novatos.
Al exponer la interfaz de usuario de jenkins, también debe exponer el puerto interno 50000. Aquí hay un servicio simple para una implementación de jenkins:
apiVersion: v1
kind: Service
metadata:
name: jenkins
namespace: jenkins
spec:
type: NodePort
ports:
- port: 8080
name: "http"
nodePort: 30000
targetPort: 8080
- port: 50000
name: "slave"
nodePort: 30010
targetPort: 50000
selector:
app: jenkins
Para el acceso externo a la interfaz de usuario de Jenkins, nodePort
se está utilizando en la configuración anterior. Estoy exponiendo el puerto 8080 al nodePort 30000 (la IU de Jenkins ahora estará disponible en node_ip:30000) y exponiendo el puerto pod 50000 al nodeport 30010.
Una vez creado el svc:
$ kubectl get svc -n jenkins
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
jenkins 10.233.5.94 8080:30000/TCP,50000:30010/TCP 23m
Ahora agrega jenkins_ip:30010
como Jenkins Tunnel
.
Cuando se ejecuta jenkins en Kubernetes, tanto el maestro como los esclavos de jenkins pueden resolver el nombre del servicio.
La mejor manera de configurar esto es usar el DNS interno y establecer la URL de jenkins en:
http://jenkins:8080
(suponiendo que llamó a su servicio jenkins y su puerto en el servicio es 8080)
No se requiere túnel.
El beneficio de este enfoque es que sobrevivirá a los reinicios de sus jenkins sin reconfiguración.
El beneficio secundario es que no tendría que exponer a Jenkins al mundo exterior, lo que limita los riesgos de seguridad.
Debe exponer los puertos 8080 y 50000 como se describe en la configuración de ejemplo del complemento https://github.com/jenkinsci/kubernetes-plugin/blob/master/src/main/kubernetes/jenkins.yml
valoraciones y reseñas
Te invitamos a añadir valor a nuestra información dando tu experiencia en los informes.