NGINX入口控制器:我可以终止TLS并传递非HTTP流量吗?

时间:2018-08-15 01:04:40

标签: kubernetes load-balancing kubernetes-ingress nginx-ingress

我正在尝试在Kubernetes中部署DNP3服务器(工业协议)。 DNP3使用TCP通信,但它是有状态协议。我目前正在部署入口控制器配置。

我意识到入口控制器是用于http / https流量的,但是我想尽可能使用它们,并利用某些固有功能(例如,相互TLS,白名单等)。 NGINX入口控制器是否要求将传入流量格式化为http流量(例如具有标头等)?如果它接收到随机的TCP(非HTTP)流量,是否可以将流量直接传递给后端服务?

我要使用的注释包括:

ingress.kubernetes.io/auth-tls-secret: default/client-secret
ingress.kubernetes.io/auth-tls-verify-depth: "3"
kubernetes.io/ingress.class: nginx-private
nginx.ingress.kubernetes.io/auth-tls-pass-certificate-to-upstream: "true"
nginx.ingress.kubernetes.io/auth-tls-verify-client: "on"
nginx.org/lb-method: ip_hash

一些注意事项:

  • 我意识到auth-tls-pass-certificate批注将添加标头。我希望我可以从标题中读取证书信息,然后从消息中删除标题/其他https数据。
  • 我希望使用ip_hash lb-method来使应用程序具有状态(始终将具有一致IP地址的客户端路由到同一后端服务器)。

1 个答案:

答案 0 :(得分:0)

不幸的是,根据我发现的信息,没有为TCP服务提供Ingress的好方法,而且似乎也没有计划在最接近的功能中添加Ingress。实际上,这仍然是GitHub上的open issue

有一些方法可以使用此StackOverflow question.

中描述的ConfigMap将TCP或UDP流量映射到Kubernetes服务。