我正在 kubernetes 上使用 confluence 运算符来执行 confluence kafka。我正在尝试设置基于主机的对融合平台组件的访问,即架构注册表和其余代理。 Confluence 在 github 上有几个示例,但我发现它还不够全面。平台的入口控制器如下
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-with-sni
annotations:
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "false"
ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
spec:
tls:
- hosts:
- kafka.$DOMAIN
- b0.$DOMAIN
- b1.$DOMAIN
- b2.$DOMAIN
- controlcenter.$DOMAIN
- ksqldb.$DOMAIN
- connect.$DOMAIN
rules:
- host: kafka.$DOMAIN
http:
paths:
- backend:
serviceName: kafka-bootstrap
servicePort: 9092
- host: b0.$DOMAIN
http:
paths:
- backend:
serviceName: kafka-0-internal
servicePort: 9092
- host: b1.$DOMAIN
http:
paths:
- backend:
serviceName: kafka-1-internal
servicePort: 9092
- host: b2.$DOMAIN
http:
paths:
- backend:
serviceName: kafka-2-internal
servicePort: 9092
- host: controlcenter.$DOMAIN
http:
paths:
- backend:
serviceName: controlcenter-0-internal
servicePort: 9021
- host: ksqldb.$DOMAIN
http:
paths:
- backend:
serviceName: ksqldb-bootstrap
servicePort: 8088
- host: connect.$DOMAIN
http:
paths:
- backend:
serviceName: connect-bootstrap
servicePort: 8083
connect、ksqldb 和 kafka 有一个在支持的端点中表示的引导服务,我认为这是因为这些组件有多个副本,我认为如果我有一个架构注册表的副本,我可以添加:
- host: schemaregistry.$DOMAIN
http:
paths:
- backend:
serviceName: schemaregistry-0-internal
servicePort: 8081
并将模式注册表添加到主机数组将打开模式注册表的入口。我想如果我想从外部访问它,也应该对其余代理执行相同的操作。我的说法正确吗?尝试了一下,我无法连接,但这可能是 VPN 设置...
让我想知道的一件事是各个代理的协议规范为“http”,我希望这是普通的“TCP”,因为 kafka 线路通过 TCP 运行。这就是我们强制 nginx 路由 TCP 的方式吗?好像不对。
剩下的代理问题实际上是一个 VPN 问题,UDP 和 TCP 路由在 https://kubernetes.github.io/ingress-nginx/user-guide/exusing-tcp-udp- 中得到了很好的解释服务/ 如评论中所述。