2017-10-13 130 views
0

最近我嘗試在中國的AWS上使用Kubernetes v1.7.3和jenkins v2.73.2建立CI/CD流(GFW阻塞dockerhub)。使用相同的URL顯示相同的服務,但有兩個不同的端口與traefik?

現在我可以用traefik公開服務,但似乎我不能用兩個不同的端口使用相同的URL公開相同的服務。

理想我想揭露http://jenkins.mydomain.com爲端口80上詹金斯的用戶界面,以及端口的詹金 - 從(詹金斯發現)50000 例如,我想這個工作:

apiVersion: extensions/v1beta1 kind: Ingress metadata: name: jenkins namespace: default spec: rules: - host: jenkins.mydomain.com http: paths: - path:/ backend: serviceName: jenkins-svc servicePort: 80 - host: jenkins.mydomain.com http: paths: - path:/ backend: serviceName: jenkins-svc servicePort: 50000 和我的詹金斯-SVC被定義爲

apiVersion: v1 kind: Service metadata: name: jenkins-svc labels: run: jenkins spec: selector: run: jenkins ports: - port: 80 targetPort: 8080 name: http - port: 50000 targetPort: 50000 name: slave

在現實中,後者的規則將覆蓋前規則。

此外,有兩個插件我嘗試過:kubernetes-cloudkubernetes。 使用前一選項,我無法配置jenkins-tunnel URL,所以從站無法與主站連接;與後者的選項,我不能從私人碼頭註冊表,如AWS ECR(沒有地方配置憑據),因此無法創建從屬(imagePullError)。

最後,我真的只是想讓詹金斯工作(創建奴隸與我的自定義圖像,建立奴隸和刪除工作完成後的奴隸),歡迎任何其他解決方案。

+0

爲了能夠從ECR拉你,你可以具有適當權限的AWS實例角色。拉將使用實例元數據並透明地工作。 – vascop

回答

0

如果您希望jenkins可以從集羣外部訪問,那麼您需要更改ingress配置。 ingress類型的

默認類型是ClusterIP

自曝上羣集內部IP服務。選擇此值使得該服務只能從羣集內訪問。這是默認的服務類型

你想讓它類型爲NodePort

在靜態端口(NodePort)自曝在每個節點上的IP服務。將自動創建NodeIP服務將路由到的ClusterIP服務。您可以聯繫NodePort服務,從集羣外,通過請求:

所以你的服務應該是這樣的:

apiVersion: v1 kind: Service metadata: name: jenkins-svc labels: run: jenkins spec: selector: run: jenkins type: NodePort ports: - port: 80 targetPort: 8080 name: http - port: 50000 targetPort: 50000 name: slave

相關問題