在 Kubernetes 中經過 Apache Kafka 插件遠程處理 Kafka 啓動程序

本文首發於:Jenkins 中文社區node

原文連接    做者:Long Nguyengit

譯者:wenjunzhangpgithub

cover

我是越南 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

當前狀態 

  • 支持憑據的 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 。app

kafka-provisioning-kubernetes-ui

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

kafka-provisioning-kubernetes-architecture

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

連接 

相關文章
相關標籤/搜索