欢迎访问我的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的文件,内容如下
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
metadata:
name: my-bridge
spec:
replicas: 1
bootstrapServers: my-cluster-kafka-bootstrap:9092
http:
port: 8080
- 执行以下命令开始部署bridge,我这里kafka服务的namespace是aabbcc,请您改为自己实际的namespace
kubectl apply -f kafka-bridge.yaml -n aabbcc
- 查看deployment、service、pod,发现均有新增,如下图
- 从上图可见,bridge的service是ClusterIP类型,其值是10.96.0.222,于是迫不及待的试试bridge,执行以下命令,向bridge发出第一个请求,功能是获取所有topic
curl -X GET http://10.96.0.222:8080/topics
- 成功收到bridge的响应,如下图,现有全部topic都返回了
增加一个service,使得可以从外部访问
- bridge的服务是ClusterIP类型,外部无法访问,那就新增一个NodePort类型的服务吧,新建文件bridge-service-nodeport.yaml,内容如下,31331是我在宿主机上随便找了个未占用的端口,您随意
apiVersion: v1
kind: Service
metadata:
name: bridge-nodeport
spec:
type: NodePort
ports:
- port: 8080
nodePort: 31331
selector:
strimzi.io/cluster: my-bridge
strimzi.io/kind: KafkaBridge
strimzi.io/name: my-bridge-bridge
- 执行以下命令让上述service生效,我这里kafka服务的namespace是aabbcc,请您改为自己实际的namespace
kubectl apply -f bridge-service-nodeport.yaml -n aabbcc
- 从宿主机暴露端口后,就可以用客户端工具(例如apipost)远程访问了,如下图
安全问题(需要自己处理)
- 从前面的架构图可以看出,业务服务与bridge之间是http协议,那么存在安全问题吗(毕竟是远程调用)?如果真的存在安全问题,strimzi都应对之策吗?
- 安全问题确实存在,而且strimzi的应对之策也真够敷衍…不多说了,来围观吧
- 调侃归调侃,但是真正使用bridge的时候,尤其是应用与bridge不在同一个内网环境时,一定要自己做好安全工作
- 至此,Strimzi Kafka Bridge的介绍和部署已经完成,接下来的文章会有更多实战等着咱们,通过实际操作熟练掌握桥接特性