我搜索了一个解决方案,让confluentic kafka与ingress一起工作,我找到了这个PR来实现它,但这个PR没有被接受(但存储库所有者放弃了,回购也不存在了(。
因此,我试图用本手册作为参考,实现一些非常简单的概念验证。
目前我已启用入口:
$ kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
kafka-ingress <none> kafka.local 80 40m
使用这个应用的yaml文件:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: kafka-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: kafka.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kafka-cp-kafka-rest
port:
number: 8082
kafka是从helm charts安装的,我的minikube集群(在linux机器上(中的服务看起来像:
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kafka-cp-control-center ClusterIP 10.111.250.7 <none> 9021/TCP 63m
kafka-cp-kafka ClusterIP 10.100.60.8 <none> 9092/TCP,5556/TCP 63m
kafka-cp-kafka-connect ClusterIP 10.99.105.18 <none> 8083/TCP,5556/TCP 63m
kafka-cp-kafka-headless ClusterIP None <none> 9092/TCP 63m
kafka-cp-kafka-rest ClusterIP 10.108.102.194 <none> 8082/TCP,5556/TCP 63m
kafka-cp-ksql-server ClusterIP 10.104.173.97 <none> 8088/TCP,5556/TCP 63m
kafka-cp-schema-registry ClusterIP 10.110.6.112 <none> 8081/TCP,5556/TCP 63m
kafka-cp-zookeeper ClusterIP 10.109.42.247 <none> 2181/TCP,5556/TCP 63m
kafka-cp-zookeeper-headless ClusterIP None <none> 2888/TCP,3888/TCP 63m
minio
ClusterIP 10.98.39.90 <none> 9000/TCP 63m
我在我的/etc/hosts中添加了一个从我的minikube地址到kafka的映射。本地主机:
192.168.49.2 kafka.本地
当使用这个curl调用时,我得到一个响应:
curlhttp://10.108.102.194:8082/topics
但当我试图呼叫时:
curlhttp://kafka.local/topics
我得到了:
curl:(7(无法连接到kafka。本地端口80:连接被拒绝
如何使用主机通过ingress调用kafka rest服务?
只有当我在没有驱动程序(在机器的存储上创建,而不是作为VM(和指定9.x入口网络ip(为了获得它,我运行了:ip a
(的情况下启动minikube时,它才起作用
minikube start --driver=none --apiserver-ips <9.x.x.x>
我做的另一件事是删除:
注释:nginx.ingress.kubernetes.io/rewrite-target:/$1
来自我的资源yaml。
希望它能帮助别人。