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

时间:2018-07-11 14:53:45

标签: kubernetes kubernetes-ingress kubernetes-service

我是Kubernetes的新手,想了解如何将Kubernetes中运行的服务向外界公开。我已经使用集群上的NodePort公开了它。 因此,例如:服务公开了主机上的端口31234,我可以通过https://kubeserverIP:31234从另一台服务器访问该服务。

我要实现的是通过url,例如http://service.example.com通过nginx(在另一台服务器上,在Kube控件之外)提供此服务。我尝试使用上游指向该服务的方式部署nginx,但这种方法无法正常工作,并且收到错误的网关错误。

这里是否缺少我想要的东西?还是有一种更简洁的方法来实现这一目标。

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

谢谢

2 个答案:

答案 0 :(得分:5)

您快到了!下一步将设置ingress controller。有一个NGINX Ingress控制器插件,您可以检出here

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

答案 1 :(得分:3)

感谢您指出正确的方向。

基本步骤大致是:

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

  2. 为入口创建名称空间。

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

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