本文首發於:Jenkins 中文社區node
原文連接 做者:Long Nguyengit
譯者:wenjunzhangpgithub
我是越南 FPT 大學的 Long Nguyen ,個人 Google Summer of Code 2019 項目是 Remoting over Apache Kafka with Kubernetes features 。這是我第一次爲 Jenkins 作貢獻,我很是興奮地宣佈在第一階段已經完成的功能。docker
當前版本的 Remoting over Apache Kafka plugin 遠程處理須要用戶手動配置整個系統,包括 zookeeper 、 kafka 和遠程處理代理。它也不支持動態代理配置,所以很難實現具備伸縮性的擴展。個人項目旨在解決兩個問題: 1. 提供 Apache-Kafka 集羣的現成解決方案。 2. Kubernetes 集羣中的動態代理配置。apache
此功能是 2.0 版本的一部分,所以還沒有正式發佈。您能夠經過使用 Experimental Update Center 更新到 2.0.0-alpha 版本或直接從 master 分支構建來嘗試該功能:服務器
git clone https://github.com/jenkinsci/remoting-kafka-plugin.git cd remoting-kafka-plugin/plugin mvn hpi:run
在全局配置頁面上,用戶能夠輸入 Kubernetes 服務器信息和憑據。而後他們只需點擊一個按鈕就能夠啓動 ApacheKafka 。app
當用戶點擊 Start Kafka on Kubernetes
按鈕時, Jenkins 將根據信息建立一個 Kubernetes 客戶機,而後從 resources
中應用 zookeeper 和 kafka yaml 規範文件。less
Apache-Kafka 插件上遠程處理的 Helm 圖表基於 stable/jenkins 圖表和 incubator/kafka 圖表。截至目前,該圖表仍在開發中,由於它仍在等待第 2 階段的 Cloud API 實現。可是,您可使用一個獨立的遠程 Kafka 代理查看演示圖表:單元測試
git clone -b demo-helm-phase-1 https://github.com/longngn/remoting-kafka-plugin.git cd remoting-kafka-plugin K8S_NODE=<your Kubernetes node IP> ./helm/jenkins-remoting-kafka/do.sh start
命令 do.sh start
將執行如下步驟: * 安裝圖表(與 Jenkins 和 Kafka 一塊兒使用)。 * 經過應用下面的 JCasC 在 Jenkins master 上啓動一臺 Kafka 計算機。測試
jenkins: nodes: - permanent: name: "test" remoteFS: "/home/jenkins" launcher: kafka: {}
kubectl
來檢查圖表狀態,例如: ``` $ kubectl get all -n demo-helm NAME READY STATUS RESTARTS AGE pod/demo-jenkins-998bcdfd4-tjmjs 2⁄2 Running 0 6m30s pod/demo-jenkins-remoting-kafka-agent 1⁄1 Running 0 4m10s pod/demo-kafka-0 1⁄1 Running 0 6m30s pod/demo-zookeeper-0 1⁄1 Running 0 6m30sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/demo-0-external NodePort 10.106.254.187 19092:31090/TCP 6m30s service/demo-jenkins NodePort 10.101.84.33 8080:31465/TCP 6m31s service/demo-jenkins-agent ClusterIP 10.97.169.65 50000/TCP 6m31s service/demo-kafka ClusterIP 10.106.248.10 9092/TCP 6m30s service/demo-kafka-headless ClusterIP None 9092/TCP 6m30s service/demo-zookeeper ClusterIP 10.109.222.63 2181/TCP 6m30s service/demo-zookeeper-headless ClusterIP None 2181/TCP,3888/TCP,2888/TCP 6m31s
NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/demo-jenkins 1⁄1 1 1 6m30s
NAME DESIRED CURRENT READY AGE replicaset.apps/demo-jenkins-998bcdfd4 1 1 1 6m30s
NAME READY AGE statefulset.apps/demo-kafka 1⁄1 6m30s statefulset.apps/demo-zookeeper 1⁄1 6m30s ```