如何在 kafka-confluent 的 minikube 集群中启用入口

How to enable ingress in minikube cluster for kafka-confluent

我搜索了一个让 confluentic-kafka 与入口一起工作的解决方案,我找到了这个 PR 做了这样的实现,但是这个 PR 没有被接受(但是 - 存储库所有者删除并且回购不存在了)。

因此,我尝试使用此 manual.

作为参考来实现一些非常简单的概念验证

目前我启用了入口:

$ 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: /
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.local 主机的映射:

192.168.49.2 kafka.local

使用此 curl 调用时,我得到响应:

curl http://10.108.102.194:8082/topics

但是当我尝试打电话时:

curl http://kafka.local/topics

我得到:

curl: (7) Failed to connect to kafka.local port 80: Connection refused

如何使用主机通过入口调用 kafka-rest 服务?

只有当我启动我的 minikube 时没有驱动程序(在机器的存储上创建而不是作为 VM)并指定 9.x 入口网络 ip(为了得到它我 运行: ip a):

minikube start --driver=none --apiserver-ips <9.x.x.x>

我做的另一件事是删除:

annotations: nginx.ingress.kubernetes.io/rewrite-target: /

来自我的资源 yaml。

希望能帮到别人。