我对网络,SSL和NGINX有点新鲜,因此如果我错过了某些明显的东西,那么这些东西就会裸露出来。为了说明这一点,我正在研究GCE和Kuberenetes。我的目标仅仅是通过SSL公开群集上的所有微服务。理想情况下,它的工作方式与通过type ='LoadBalancer'公开部署并获取单个外部IP时的工作方式相同。这是我的目标,但SSL不适用于这些基本的负载平衡器。Kubernetes,GCE,负载均衡,SSL
从我的研究中,当前最好的解决方案是设置一个nginx入口控制器,使用入口资源和服务来公开我的微服务。下面是我对这个过程的理解所绘制的图表。
我已经得到了这一切能够成功通过HTTP。我从这里部署了默认的nginx控制器:https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx。以及缺省后端的默认后端和服务。我自己的微服务的入口将规则设置为我的域名和路径:/。
这很成功,但有两件事让我感到困惑。
当暴露的服务资源为我的后端(微服务)一个导向我跟着常用的类型=“NodePort”,另一只是把一个端口到达服务。两者都将目标端口设置为后端应用程序端口。我尝试了这两种方式,他们都似乎工作。引导一个是从上面的链接。指南2:http://blog.kubernetes.io/2016/03/Kubernetes-1.2-and-simplifying-advanced-networking-with-Ingress.html。这里有什么不同?
另一个混淆之处是我的入口总是有两个IP。我最初的思考过程是应该只有一个外部IP,这会打到我的入口,然后由nginx指导路由。或者是直接向nginx的ip?无论如何,创建的第一个IP地址似乎给了我访问第二个IP失败的预期结果。
尽管我很困惑,但事情似乎在HTTP上正常工作。通过HTTPS不是那么多。起初,当我通过https发起网络请求时,事情就会挂起。我在我的防火墙规则上打开了443个似乎可行的工作,但是我打到了默认的后端而不是我的微服务。
阅读引导我从Kubernetes文档中得知:目前,Ingress资源仅支持http规则。 这可以解释为什么我点击默认后端,因为我的规则只适用于HTTP。但是,如果是这样,我应该如何使用SSL的这种方法?
我注意到的另一件事是,如果我编写一个没有规则的入口资源,并给它我想要的后端,我仍然被定向到我原来的默认后端。这更奇怪,因为kubectl描述更新,并指出我的默认后端是我想要的后端...
任何帮助或指导将不胜感激。谢谢!
您可以将您的JSON/YAML文件入口和服务的配置? –