使用 nginx 反向代理在 Kubernetes 中公开服务

Exposing a service in Kubernetes using nginx reverse proxy

我是 Kubernetes 的新手,想了解如何将 Kubernetes 中的服务 运行 公开给外界。我在集群上使用 NodePort 公开了它。 因此,例如:一项服务在主机上公开端口 31234,我可以通过 https://kubeserverIP:31234.

从另一台服务器访问该服务

我想要实现的是通过 nginx(在不同的服务器上,不受 Kube 控制)通过 url,比如 http://service.example.com 提供此服务。我已经尝试部署 nginx,上游指向该服务,但它不起作用,并出现错误的网关错误。

这里有我遗漏的东西吗?或者有没有更简洁的方法来实现这一点。

我有 Kubernetes 集群的裸机安装,无法访问 gce 负载均衡器或其他供应商 LB。

谢谢

你就快完成了!您的下一步将是设置 ingress controller. There is an NGINX Ingress controller plugin that you can checkout here

编辑:这是一个示例配置:https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example

感谢您指出正确的方向。

大致的基本步骤是:

  1. 创建应用及其服务定义。

  2. 为入口创建一个名称space。

  3. 创建默认后端部署和服务,用于重定向所有未在入口规则中定义的请求。在入口创建这些 space
  4. 创建 nginx 入口控制器部署。
  5. 创建 RBAC 规则。
  6. 最后使用路径和端口为应用程序创建入口规则。

找到了一个非常有用的指南,其中详细解释了一些事情: https://akomljen.com/kubernetes-nginx-ingress-controller/