文档章节

在 Kubernetes 中通过 Apache Kafka 插件远程处理 Kafka 启动程序

Jenkins中文社区
 Jenkins中文社区
发布于 11/10 01:02
字数 832
阅读 19
收藏 0

本文首发于:Jenkins 中文社区

原文链接    作者:Long Nguyen

译者:wenjunzhangp

cover

我是越南 FPT 大学的 Long Nguyen ,我的 Google Summer of Code 2019 项目是 Remoting over Apache Kafka with Kubernetes features 。这是我第一次为 Jenkins 做贡献,我非常兴奋地宣布在第一阶段已经完成的功能。

项目介绍 

当前版本的 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 。

kafka-provisioning-kubernetes-ui

当用户点击 Start Kafka on Kubernetes 按钮时, Jenkins 将根据信息创建一个 Kubernetes 客户机,然后从 resources 中应用 zookeeper 和 kafka yaml 规范文件。

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

链接 

© 著作权归作者所有

Jenkins中文社区

Jenkins中文社区

粉丝 59
博文 68
码字总数 99446
作品 2
海淀
私信 提问
云+社区技术沙龙 Kafka meetup 深圳站

如果说 2018 年是技术大爆炸年,那么 Apache Kafka 绝对是其中闪亮的新星。 自Kafka 从首发之日起,已经走过了快八个年头。Kafka 已经从最开始的大规模消息系统,发展成为功能完善的分布式流...

新垣吉衣OSC
2018/04/02
30
0
云+社区技术沙龙 Kafka meetup 深圳站

如果说 2018 年是技术大爆炸年,那么 Apache Kafka 绝对是其中闪亮的新星。 自Kafka 从首发之日起,已经走过了快八个年头。Kafka 已经从最开始的大规模消息系统,发展成为功能完善的分布式流...

吉衣OSC
2018/04/02
533
0
在K8S上运行Kafka合适吗?会遇到哪些陷阱?

Kubernetes设计的初衷是运行无状态工作负载。这些通常采用微服务架构的工作负载,是轻量级,可水平扩展,遵循十二要素应用程序,可以处理环形断路和随机Monkey测试。 另一方面,Kafka本质上是...

姜俊厚 译
09/06
0
0
在Kubernetes上运行Kafka合适吗?

介绍 Kubernetes设计的初衷是运行无状态工作负载。这些通常采用微服务架构的工作负载,是轻量级,可水平扩展,遵循十二要素应用程序,可以处理环形断路和随机Monkey测试。 另一方面,Kafka本...

Docker
06/04
0
0
在 OKD 和 Kubernetes 上运行 Apache Kafka 集群 - Strimzi

Strimzi提供了一种在各种部署配置中在OpenShift和Kubernetes上运行Apache Kafka集群的方法。 在使用Strimzi项目时,使用Kubernetes和OKD(适用于Red Hat OpenShift)启动和运行Apache Kafka集...

匿名
2018/11/09
404
0

没有更多内容

加载失败,请刷新页面

加载更多

Kafka实战(五) - 核心API及适用场景全面解析

1 四个核心API ● Producer API 允许一个应用程序发布一串流式的数据到一个或者多个Kafka topic。 ● Consumer API 允许一个应用程序订阅一个或多个topic ,并且对发布给他们的流式数据进行处...

JavaEdge
33分钟前
7
0
实现线程的第三种方式——Callable & Future

Callable Runnable 封装一个异步运行的任务, 可以把它想象成为一个没有参数和返回值的异步方 法。Callable 与 Runnable 类似, 但是有返回值。Callable 接口是一个参数化的类型, 只有一 个...

ytuan996
今天
9
0
OSChina 周六乱弹 —— 不要摁F了!

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 : 朴树写的词曲都给人一种莫名的失落感,不过这首歌他自己却没有唱,换成赵传这种高音阶嘶喊的确很好,低沉但却有力,老男人的呐喊...

小小编辑
今天
11
0
Android Binder机制 - interface_cast和asBinder讲解

研究Android底层代码时,尤其是Binder跨进程通信时,经常会发现interface_cast和asBinder,很容易被这两个函数绕晕,下面来讲解一下: interface_cast 下面根据下述ICameraClient例子进行分析...

天王盖地虎626
昨天
13
0
计算机实现原理专题--存储器的实现(二)

计算机实现原理专题--存储器的实现(一)中描述了一种可以记住输入端变化的装置。现需要对其功能进行扩充,我们将上面的开关定义为置位,下面的开关定义为复位,然后需要增加一个保持位,当保...

FAT_mt
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部