Strimzi Kafka Bridge(桥接)实战之一:简介和部署

  金牌会员 | 2023-10-6 11:31:13 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 886|帖子 886|积分 2658

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
关于《Strimzi Kafka Bridge(桥接)实战》


  • 在strimzi技术体系中,桥接(bridge)是很要的功能,内容也很丰富,因此将桥接相关的内容从《strimzi实战》系列中独立出来,成立桥接相关的系列文章,便于分类和专项深入
本篇概览


  • 本文是《Strimzi Kafka Bridge(桥接)实战》系列的第一篇,按照惯例,先做好介绍和部署工作,以便后续深入学习
  • 什么是桥接?来看官方说明,如下图,最上面的Brokers就是核心的kafka服务,底部的Client是业务应用,分为消息生产者(Producers)和消费者(Consumers)两类,正中心蓝色背景的Strimzi Kafka Bridge就是今天的主角:strimzi桥接服务,从下图很容易看出它的作用:通过http接口来生产和消费kafka消息

  • 在整个strimzi技术体系中,bridge可谓举足轻重,如下图红框,官方为bridge准备了专门文档链接,这是其他扩展组件都没有的待遇

安装方式的选择


  • bridge支持在两种环境下安装:

  • kubernetes环境:使用strimzi的kafka-operator安装
  • 非kubernetes环境:使用bridge的安装包,解压后修改配置文件,然后用内置的shell文件启动即可


  • 整个《strimzi实战》系列都是在kubernetes环境中操作的,所以本篇只考虑上述第一种安装方式:kafka-operator
  • 整个部署过程非常简单,首先确认kubernetes和strimzi的operator都已经部署完成,kafka服务也已经部署好了(部署细节请参考《strimzi实战之二:部署和消息功能初体验》
  • 第二步:新增名为kafka-bridge.yaml的文件,内容如下
  1. apiVersion: kafka.strimzi.io/v1beta2
  2. kind: KafkaBridge
  3. metadata:
  4.   name: my-bridge
  5. spec:
  6.   replicas: 1
  7.   bootstrapServers: my-cluster-kafka-bootstrap:9092
  8.   http:
  9.     port: 8080
复制代码

  • 执行以下命令开始部署bridge,我这里kafka服务的namespace是aabbcc,请您改为自己实际的namespace
  1. kubectl apply -f kafka-bridge.yaml -n aabbcc
复制代码

  • 查看deployment、service、pod,发现均有新增,如下图

  • 从上图可见,bridge的service是ClusterIP类型,其值是10.96.0.222,于是迫不及待的试试bridge,执行以下命令,向bridge发出第一个请求,功能是获取所有topic
  1. curl -X GET http://10.96.0.222:8080/topics
复制代码

  • 成功收到bridge的响应,如下图,现有全部topic都返回了

增加一个service,使得可以从外部访问


  • bridge的服务是ClusterIP类型,外部无法访问,那就新增一个NodePort类型的服务吧,新建文件bridge-service-nodeport.yaml,内容如下,31331是我在宿主机上随便找了个未占用的端口,您随意
  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4.   name: bridge-nodeport
  5. spec:
  6.   type: NodePort
  7.   ports:
  8.   - port: 8080
  9.     nodePort: 31331
  10.   selector:
  11.     strimzi.io/cluster: my-bridge
  12.     strimzi.io/kind: KafkaBridge
  13.     strimzi.io/name: my-bridge-bridge
复制代码

  • 执行以下命令让上述service生效,我这里kafka服务的namespace是aabbcc,请您改为自己实际的namespace
  1. kubectl apply -f bridge-service-nodeport.yaml -n aabbcc
复制代码

  • 从宿主机暴露端口后,就可以用客户端工具(例如apipost)远程访问了,如下图

安全问题(需要自己处理)


  • 从前面的架构图可以看出,业务服务与bridge之间是http协议,那么存在安全问题吗(毕竟是远程调用)?如果真的存在安全问题,strimzi都应对之策吗?
  • 安全问题确实存在,而且strimzi的应对之策也真够敷衍...不多说了,来围观吧

  • 调侃归调侃,但是真正使用bridge的时候,尤其是应用与bridge不在同一个内网环境时,一定要自己做好安全工作
  • 至此,Strimzi Kafka Bridge的介绍和部署已经完成,接下来的文章会有更多实战等着咱们,通过实际操作熟练掌握桥接特性
欢迎关注博客园:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表