NGINX 入口控制器:我可以终止 TLS 并传递 non-http 流量吗?
NGINX Ingress Controller: Can I terminate TLS and pass non-http traffic?
我正在尝试在 Kubernetes 中部署 DNP3 服务器(一种工业协议)。 DNP3 使用 TCP 通信,但它是一种有状态协议。我目前正在部署入口控制器配置。
我知道入口控制器是为 http/https 流量设计的,但我想尽可能使用它们并利用一些固有功能(例如相互 TLS、白名单等)。 NGINX 入口控制器是否要求将传入流量格式化为 http 流量(例如具有 header 等)?如果它接收到随机 TCP (non-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 注释会添加一个 header。我希望我可以从 header 中读取证书信息,然后从消息中删除 header/other https 数据。
- 我希望不使用 ip_hash lb-method 以允许应用程序是有状态的(具有一致 IP 地址的客户端总是路由到相同的后端服务器)。
遗憾的是,根据我找到的信息,目前还没有很好的方法为TCP服务提供Ingress,而且似乎也没有计划将其添加到最近的特性中。实际上,这仍然是 GitHub 上的 open issue。
有一些方法可以使用 Whosebug 中描述的 ConfigMap 将 TCP 或 UDP 流量映射到 Kubernetes 服务
我正在尝试在 Kubernetes 中部署 DNP3 服务器(一种工业协议)。 DNP3 使用 TCP 通信,但它是一种有状态协议。我目前正在部署入口控制器配置。
我知道入口控制器是为 http/https 流量设计的,但我想尽可能使用它们并利用一些固有功能(例如相互 TLS、白名单等)。 NGINX 入口控制器是否要求将传入流量格式化为 http 流量(例如具有 header 等)?如果它接收到随机 TCP (non-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 注释会添加一个 header。我希望我可以从 header 中读取证书信息,然后从消息中删除 header/other https 数据。
- 我希望不使用 ip_hash lb-method 以允许应用程序是有状态的(具有一致 IP 地址的客户端总是路由到相同的后端服务器)。
遗憾的是,根据我找到的信息,目前还没有很好的方法为TCP服务提供Ingress,而且似乎也没有计划将其添加到最近的特性中。实际上,这仍然是 GitHub 上的 open issue。
有一些方法可以使用 Whosebug 中描述的 ConfigMap 将 TCP 或 UDP 流量映射到 Kubernetes 服务