使用 nginx 反向代理在 Kubernetes 中公开服务
Posted
技术标签:
【中文标题】使用 nginx 反向代理在 Kubernetes 中公开服务【英文标题】:Exposing a service in Kubernetes using nginx reverse proxy 【发布时间】:2018-12-19 16:17:43 【问题描述】:我是 Kubernetes 新手,想了解如何将 Kubernetes 中运行的服务暴露给外界。我已经使用集群上的 NodePort 公开了它。 因此,例如:一个服务在主机上公开了 31234 端口,我可以通过 https://kubeserverIP:31234 从另一台服务器访问该服务。
我想要实现的是通过 nginx(在不同的服务器上,不受 Kube 控制)通过 URL 提供此服务,例如,http://service.example.com。我尝试使用指向该服务的上游来部署 nginx,但这不起作用并出现错误的网关错误。
这里有什么我遗漏的吗?或者有没有更简洁的方法来实现这一点。
我有一个裸机安装的 Kubernetes 集群,无法访问 gce 负载均衡器或其他供应商 LB。
谢谢
【问题讨论】:
【参考方案1】:你快到了!您的下一步将是设置ingress controller。有一个 NGINX Ingress 控制器插件,您可以查看 here。
编辑:这是一个示例配置:https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example
【讨论】:
在完整的示例链接中,我看不到 ngnix 的配置位置。【参考方案2】:感谢您指出正确的方向。
基本步骤大致是:
创建应用及其服务定义。
为入口创建命名空间。
创建默认后端部署和服务,用于重定向所有未在 Ingress 规则中定义的请求。在入口空间中创建这些 创建 nginx 入口控制器部署。 创建 RBAC 规则。 最后为具有路径和端口的应用程序创建入口规则。找到了一个非常有用的指南,其中详细解释了一些事情: https://akomljen.com/kubernetes-nginx-ingress-controller/
【讨论】:
以上是关于使用 nginx 反向代理在 Kubernetes 中公开服务的主要内容,如果未能解决你的问题,请参考以下文章
容器化单页面应用中Nginx反向代理与Kubernetes部署
Nginx 反向代理背后的 Grafana 返回 alert.title