Puncte:1

Cum să faceți portul agenților Jenkins disponibil cu un controler Ingress pe Kubernetes?

drapel cn

Încerc să configurez Jenkins într-un cluster Digital Ocean Kubernetes. Folosesc un controler de intrare NGINX deoarece vreau să îmi accesez serverul dintr-un subdomeniu (jenkins.example.com). Totul funcționează bine până acum, am interfața mea de utilizare pe respectivul domeniu securizat cu un certificat personalizat. Am început să întâmpin probleme când încercam să-mi conectez agenții (sau sclavii pe care i-am citit în altă parte?) la server.

Ceea ce am incercat

Am încercat să configurez un echilibrator de încărcare, dar nu am reușit să-l fac să funcționeze, deoarece folosesc Digital Ocean și majoritatea documentelor pe care le-am găsit au fost pentru GKE / EKS și altele, care au propriul lor LB intern. Am încercat și să cartografiez o rută /agenți pe numele portului serviciului apoi pe alt serviciu cu tip „ClusterIP”, fără succes (nu a fost găsit de la Jenkins).

Configurația mea actuală

jenkins-deployment.yaml

apiVersion: apps/v1
fel: Desfăşurare
metadate:
  nume: jenkins-dep
  etichete:
    aplicație: jenkins
specificație:
  replici: 1
  selector:
    matchLabels:
      aplicație: jenkins
  șablon:
    metadate:
      etichete:
        aplicație: jenkins
    specificație:
      containere:
      - nume: jenkins
        imagine: jenkins/jenkins:lts-jdk11
        imagePullPolicy: IfNotPresent
        porturi:
        - containerPort: 8080
        - containerPort: 50000

jenkins-service.yaml

apiVersion: v1
fel: Serviciu
metadate:
  nume: jenkins-svc
  etichete:
    aplicație: jenkins
specificație:
  tip: NodePort
  selector:
    aplicație: jenkins
  porturi:
  - nume: ui
    protocol: TCP
    port: 8080
    targetPort: 8080
    nodePort: 32500
  - nume: agenti
    protocol: TCP
    port: 50000
    targetPort: 50000
    nodePort: 32501

jenkins-ingress.yaml

apiVersion: networking.k8s.io/v1
fel: Intrare
metadate:
  nume: jenkins-ingress
specificație:
  tls:
  - gazde:
      - jenkins.example.com
    secretName: tls-secret
  reguli:
  - gazdă: jenkins.example.com
    http:
      trasee:
      - cale: /
        pathType: Prefix
        backend:
          serviciu:
            nume: jenkins-svc
            port:
              nume: ui
      #- cale: /agents
      # pathType: Prefix
      # backend:
      # serviciu:
      # nume: jenkins-svc
      # port:
      # nume: agenți

Concluzia este: cum fac disponibil portul Jenkins 50000 pentru ca agenții să se conecteze pe serverul meu? Sau cum aș putea schimba setările Jenkins pentru a găzdui o astfel de configurație?

Puncte:2
drapel in

Din câte știu, Jenkins folosește un protocol personalizat pentru comunicarea cu agenții săi de compilare, care este un RMI Java binar și nu bazat pe HTTP. Din moment ce resursa Ingress este numai pentru gazdă: dispecerare virtuală bazată pe solicitări HTTP, nu puteți folosi niciuna fel: Intrare declarație pentru a face asta

Dar, cu controlerul nginx-ingress în mod specific, acestea permit expunerea serviciilor TCP care probabil va face ce vrei tu

greg_wss avatar
drapel cn
Multumesc pentru asta. În prezent le urmăresc documentul, voi actualiza această postare dacă reușesc să obțin ceva.
andolsi zied avatar
drapel jp
Efectiv, soluția este de a expune serviciul TCP. Pentru a evita erorile, recomand să utilizați versiunea helm de la ingress-nginx (am testat 4.0.12) așa cum este descris aici (https://docs.cloudbees.com/docs/cloudbees-ci/latest/cloud-setup-guide/configure -ports-jnlp-agents#values-yaml-configure-jnlp)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.