Nginx
如何通過 Kubernetes 上的 Ingress 控制器使 Jenkins 代理埠可用?
我正在嘗試在 Digital Ocean Kubernetes 集群中設置 Jenkins。我正在使用 NGINX 入口控制器,因為我想從子域(jenkins.example.com)訪問我的伺服器。到目前為止一切正常,我在所述域上使用自定義證書保護了我的 UI。在嘗試將代理(或我在其他地方讀到的從屬設備?)連接到伺服器時,我開始遇到問題。
我試過的
我試圖設置一個負載均衡器,但由於我使用的是 Digital Ocean 並且我發現的大多數文件都是針對 GKE / EKS 和其他具有自己內部 LB 的文件,所以我無法讓它工作。我還嘗試在服務的埠名稱上映射路由
/agents
,然後在另一個具有“ClusterIP”類型的服務上映射,但沒有成功(從 Jenkins 中找不到)。我目前的配置
詹金斯部署.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: jenkins-dep labels: app: jenkins spec: replicas: 1 selector: matchLabels: app: jenkins template: metadata: labels: app: jenkins spec: containers: - name: jenkins image: jenkins/jenkins:lts-jdk11 imagePullPolicy: IfNotPresent ports: - containerPort: 8080 - containerPort: 50000
詹金斯-service.yaml
apiVersion: v1 kind: Service metadata: name: jenkins-svc labels: app: jenkins spec: type: NodePort selector: app: jenkins ports: - name: ui protocol: TCP port: 8080 targetPort: 8080 nodePort: 32500 - name: agents protocol: TCP port: 50000 targetPort: 50000 nodePort: 32501
詹金斯入口.yaml
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: jenkins-ingress spec: tls: - hosts: - jenkins.example.com secretName: tls-secret rules: - host: jenkins.example.com http: paths: - path: / pathType: Prefix backend: service: name: jenkins-svc port: name: ui #- path: /agents # pathType: Prefix # backend: # service: # name: jenkins-svc # port: # name: agents
底線是:我如何使 Jenkins 埠 50000 可供代理連接到我的伺服器上?或者我如何更改 Jenkins 設置以適應這樣的配置?
據我所知,Jenkins使用自定義協議與其建構代理進行通信,該協議是二進制 Java RMI,而不是基於 HTTP。由於 Ingress 資源僅用於HTTP 請求
host:
的基於虛擬調度,因此您不能使用任何聲明來執行此操作kind: Ingress
但是,特別是使用 nginx-ingress 控制器,它們確實允許公開 TCP 服務,這可能會做你想做的事