gpt4 book ai didi

ssl - Kubernetes、GCE、负载均衡、SSL

转载 作者:太空宇宙 更新时间:2023-11-03 12:45:49 26 4
gpt4 key购买 nike

作为序言,我正在研究 GCE 和 Kuberenetes。我的目标只是通过 SSL 公开集群上的所有微服务。理想情况下,它的工作方式与您通过 type=‘LoadBalancer’ 公开部署并获得单个外部 IP 时的工作方式相同。这是我的目标,但 SSL 不适用于那些基本的负载均衡器。

根据我的研究,目前最好的解决方案是设置一个 nginx 入口 Controller ,使用入口资源和服务来公开我的微服务。下面是我根据自己对这个过程的理解画的图。

enter image description here

我已经掌握了这一切,以便在 HTTP 上成功工作。我从这里部署了默认的 nginx Controller :https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx .以及默认后端和默认后端服务。我自己的微服务的入口有规则设置为我的域名和路径:/。

这是成功的,但有两件事让我有点困惑。

  1. 在为我的后端(微服务)公开服务资源时,我遵循的一个指南使用了 type=‘NodePort’,而另一个指南只是放置了一个端口来访问服务。两者都将目标端口设置为后端应用程序端口。我尝试了这两种方式,它们似乎都有效。指南一来自上面的链接。指南 2:http://blog.kubernetes.io/2016/03/Kubernetes-1.2-and-simplifying-advanced-networking-with-Ingress.html .这里有什么区别?

  2. 另一个令人困惑的地方是我的入口总是有两个 IP。我最初的想法是应该只有一个外部 ip,它会到达我的入口,然后由 nginx 引导进行路由。还是ip直接给nginx?无论如何,创建的第一个 IP 地址似乎给了我预期的结果,因为访问第二个 IP 地址失败。

尽管我很困惑,但在 HTTP 上似乎一切正常。通过 HTTPS 不是那么多。起初,当我通过 https 发出网络请求时,一切都会挂起。我在我的防火墙规则上打开了 443,这似乎有效,但我会点击我的默认后端而不是我的微服务。

阅读让我从 Kubernetes 文档中了解到:目前 Ingress 资源仅支持 http 规则。这也许可以解释为什么我会点击默认后端,因为我的规则仅适用于 HTTP。但如果是这样,我应该如何将这种方法用于 SSL?

我注意到的另一件事是,如果我编写一个没有规则的入口资源并为其提供我想要的后端,我仍然会被定向到我原来的默认后端。这更奇怪,因为 kubectl describe ing updated 并声明我的默认后端是我想要的后端......

任何帮助或指导将不胜感激。谢谢!

最佳答案

因此,对于 #2,您可能最终配置了 Google HTTP(S) LoadBalancer,这可能是因为您缺少 kubernetes.io/ingress.class: "nginx"此处描述的注释:https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx#running-multiple-ingress-controllers .

GKE 有它自己的入口 Controller ,您需要通过将该注释粘贴在您的 nginx 部署上来覆盖它。 This article对这些东西有很好的解释。

kubernetes docs对什么有很好的描述NodePort意思是 - 基本上,该服务将从集群中每个节点上的高范围分配一个端口,节点会将流量从该端口转发到您的服务。这是在不同环境中设置负载均衡器的一种方法,但对于您的方法而言,这不是必需的。你可以省略 type微服务的 Service 字段,它将被分配默认类型,即 ClusterIP .

至于 SSL,它可能是一些不同的东西。我会确保您已经按照他们在 nginx controller docs 中描述的那样设置了 Secret。 ,例如 tls.certtls.key字段。

我还会检查 nginx Controller 的日志 - 找出它正在运行的 pod kubectl get pods ,然后跟踪它的日志:kubectl logs nginx-pod-<some-random-hash> -f .这将有助于查明您是否配置错误,例如服务是否没有配置任何端点。大多数时候我搞砸了入口的东西,这是由于服务/部署的一些非常基本的错误配置。

您还需要为指向 LoadBalancer 静态 IP 的主机名设置 DNS 记录,或者使用 cURL 的 -H ping 您的服务。 flag as they do in the docs ,否则您最终可能会被路由到默认后端 404。

关于ssl - Kubernetes、GCE、负载均衡、SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41431522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com