在 Kubernetes 中通過 Apache Kafka 插件遠程處理 Kafka 啟動程式

  • 2019 年 11 月 14 日
  • 筆記

項目介紹

當前版本的 Remoting over Apache Kafka plugin 遠程處理需要用戶手動配置整個系統,包括 zookeeper 、 kafka 和遠程處理代理。它也不支援動態代理配置,因此很難實現具有伸縮性的擴展。我的項目旨在解決兩個問題:1. 提供 Apache-Kafka 集群的現成解決方案。2. Kubernetes 集群中的動態代理配置。

當前狀態

  • 支援憑據的 Kubernetes 連接器。
  • Kubernetes 功能中的 ApacheKafka 預配功能已完全實現。
  • Helm chart 部分實現。

Kubernetes 中的 Apache-Kafka 配置

此功能是 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 。

當用戶點擊 Start Kafka on Kubernetes 按鈕時, Jenkins 將根據資訊創建一個 Kubernetes 客戶機,然後從 resources 中應用 zookeeper 和 kafka yaml 規範文件。

Helm Chart

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: {}
  • 啟動單個 Remoting Kafka Agent pod 。您可以通過運行 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 6m30s

NAME 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 “`

下一階段計劃

  • 實施 Cloud API 來配置 Remoting Kafka Agent 。(JENKINS-57668)
  • 將 Cloud API 實施與 Helm 圖表集成。(JENKINS-58288)
  • 單元測試和集成測試。
  • 發布版本 2.0 和地址回饋。(JENKINS-58289)