Score:1

จะทำให้พอร์ตตัวแทนของ Jenkins พร้อมใช้งานกับตัวควบคุม Ingress บน Kubernetes ได้อย่างไร

ธง cn

ฉันกำลังพยายามตั้งค่า Jenkins ในคลัสเตอร์ Digital Ocean Kubernetes ฉันใช้ตัวควบคุมขาเข้า NGINX เนื่องจากต้องการเข้าถึงเซิร์ฟเวอร์จากโดเมนย่อย (jenkins.example.com) จนถึงตอนนี้ทุกอย่างทำงานได้ดี ฉันมี UI ของฉันในโดเมนดังกล่าวที่รักษาความปลอดภัยด้วยใบรับรองที่กำหนดเอง ฉันเริ่มพบปัญหาเมื่อพยายามเชื่อมต่อตัวแทนของฉัน (หรือทาสที่ฉันอ่านที่อื่น?) กับเซิร์ฟเวอร์

สิ่งที่ฉันได้ลอง

ฉันพยายามตั้งค่าโหลดบาลานเซอร์ แต่ไม่สามารถใช้งานได้เนื่องจากฉันใช้ Digital Ocean และเอกสารส่วนใหญ่ที่ฉันพบคือ GKE / EKS และอื่น ๆ ซึ่งมี LB ภายในของตัวเอง ฉันยังพยายามทำแผนที่เส้นทาง /ตัวแทน บนชื่อพอร์ตของบริการจากนั้นในบริการอื่นที่มีประเภท "ClusterIP" ไม่สำเร็จ (ไม่พบจาก Jenkins)

การกำหนดค่าปัจจุบันของฉัน

jenkins-deployment.yaml

apiVersion: แอป/v1
ประเภท: การปรับใช้
ข้อมูลเมตา:
  ชื่อ: เจนกินส์-เดป
  ป้ายกำกับ:
    แอพ: เจนกินส์
ข้อมูลจำเพาะ:
  แบบจำลอง: 1
  ตัวเลือก:
    ป้ายกำกับการแข่งขัน:
      แอพ: เจนกินส์
  แม่แบบ:
    ข้อมูลเมตา:
      ป้ายกำกับ:
        แอพ: เจนกินส์
    ข้อมูลจำเพาะ:
      ตู้คอนเทนเนอร์:
      - ชื่อ: เจนกินส์
        ภาพ: jenkins/jenkins:lts-jdk11
        imagePullPolicy: ถ้าไม่ใช่ปัจจุบัน
        พอร์ต:
        - พอร์ตคอนเทนเนอร์: 8080
        - ตู้คอนเทนเนอร์พอร์ต: 50,000

jenkins-service.yaml

api เวอร์ชัน: v1
ชนิด:บริการ
ข้อมูลเมตา:
  ชื่อ: jenkins-svc
  ป้ายกำกับ:
    แอพ: เจนกินส์
ข้อมูลจำเพาะ:
  ประเภท: NodePort
  ตัวเลือก:
    แอพ: เจนกินส์
  พอร์ต:
  - ชื่อ: อุ้ย
    โปรโตคอล: TCP
    พอร์ต: 8080
    พอร์ตเป้าหมาย: 8080
    โหนดพอร์ต: 32500
  - ชื่อ: ตัวแทน
    โปรโตคอล: TCP
    พอร์ต: 50,000
    พอร์ตเป้าหมาย: 50,000
    โหนดพอร์ต: 32501

jenkins-ingress.yaml

รุ่น api: networking.k8s.io/v1
ชนิด: ทางเข้า
ข้อมูลเมตา:
  ชื่อ: jenkins-ingress
ข้อมูลจำเพาะ:
  tls:
  - เจ้าภาพ:
      - jenkins.example.com
    ชื่อลับ: tls-ความลับ
  กฎ:
  - โฮสต์: jenkins.example.com
    http:
      เส้นทาง:
      - เส้นทาง: /
        pathType: คำนำหน้า
        แบ็กเอนด์:
          บริการ:
            ชื่อ: jenkins-svc
            ท่า:
              ชื่อ: อุ้ย
      #- เส้นทาง: /ตัวแทน
      # pathType: คำนำหน้า
      # แบ็กเอนด์:
      #    บริการ:
      # ชื่อ: jenkins-svc
      #      ท่า:
      #ชื่อ:ตัวแทน

สิ่งสำคัญที่สุดคือ: ฉันจะทำให้พอร์ต Jenkins 50000 พร้อมใช้งานสำหรับตัวแทนเพื่อเชื่อมต่อบนเซิร์ฟเวอร์ของฉันได้อย่างไร หรือฉันจะเปลี่ยนการตั้งค่า Jenkins เพื่อรองรับการกำหนดค่าดังกล่าวได้อย่างไร

Score:2
ธง in

เท่าความรู้ของฉัน เจนกินส์ ใช้โปรโตคอลที่กำหนดเอง สำหรับการสื่อสารกับตัวแทนการสร้างที่เป็นไบนารี Java RMI และไม่ใช้ HTTP เนื่องจากทรัพยากร Ingress คือ เท่านั้น สำหรับ เจ้าภาพ: ตามการจัดส่งเสมือนจริงของ คำขอ HTTPคุณไม่สามารถใช้งานได้ ชนิด: ทางเข้า ประกาศให้ทำอย่างนั้น

แต่ด้วยตัวควบคุม nginx-ingress พวกเขาอนุญาตโดยเฉพาะ การเปิดเผยบริการ TCP ซึ่งน่าจะทำในสิ่งที่คุณต้องการ

greg_wss avatar
cn flag
ขอบคุณสำหรับสิ่งนี้. ขณะนี้ฉันกำลังติดตามเอกสารของพวกเขา ฉันจะอัปเดตโพสต์นี้หากฉันจัดการได้สำเร็จ
andolsi zied avatar
jp flag
วิธีแก้ปัญหาคือเปิดเผยบริการ TCP เพื่อหลีกเลี่ยงข้อผิดพลาด ฉันแนะนำให้ใช้ helm release จาก ingress-nginx (ฉันทดสอบ 4.0.12) ตามที่อธิบายไว้ที่นี่ (https://docs.cloudbees.com/docs/cloudbees-ci/latest/cloud-setup-guide/configure -ports-jnlp-agents#values-yaml-configure-jnlp)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา