我正在公共云(Azure / AWS / Google Cloud)中运行Kubernetes集群,并且我想向用户提供一些非HTTP服务。
对于HTTP服务,我通常会使用Ingress资源通过可寻址的DNS条目公开公开该服务。
对于非HTTP,基于TCP的服务(例如PostgreSQL之类的数据库),我应该如何公开这些服务以供公众使用?
我考虑过使用NodePort服务,但这要求节点本身是可公开访问的(依赖于kube-proxy路由到适当的节点)。如果可能的话,我宁愿避免这种情况。
LoadBalancer服务似乎是另一个选择,尽管我不想为要公开的每个 TCP服务创建专用的云负载平衡器。
我知道NGINX Ingress控制器支持公开TCP和UDP服务,但这似乎需要静态定义要公开的服务。就我的用例而言,这些服务是动态创建和销毁的,因此不可能在static中预先定义这些服务映射ConfigMap。