【发布时间】:2020-01-29 05:22:29
【问题描述】:
我在这个设置上苦苦挣扎了 3 天,当然我做错了什么,但从我阅读的所有文档中,我不知道什么是正确的方法。
我的目标很简单。 我有一个 docker 映像,其中有一个在 9090 端口上提供的 rest api。 我想通过 https 访问它,端口无关紧要,最好使用 443(默认 https 端口),但这不是强制性的。
到目前为止我做了什么: 使用在 Google Container Registry 上发布的 docker 映像使用实例模板设置实例组。此实例组位于 HTTPS 负载均衡器后面。 我尝试了许多不同的 LB 配置选项来启用对我的实例的访问。 从模板创建实例后,我不再可以设置与实例关联的自定义防火墙配置,这样我就能够通过 HTTP 连接到单个 VM。
各位,有什么可以帮忙的吗?
--30.09.2019------ 配置更新:
我有带有命名端口的引擎组设置: 网址:9090 https:9090
模板设置为同时允许 http 和 https 网络,但我无法添加任何可以通过 http 或 https 启用 9090 的规则,或者这没关系?
没有负载均衡器: 前端: 我有两个端点:80 用于 http,443 用于 https。 后端使用命名端口 http(应该指向 9090)。
【问题讨论】:
-
使用以下内容编辑您的问题。负载均衡器前端和后端配置是什么?您如何公开容器的端口以在容器主机外部访问?您的问题缺少很多信息。尽可能详细。我将首先使用具有现有 VM 实例的非托管实例组进行测试。完成该工作后,请使用托管实例组转到后续步骤。此外,从 HTTP(端口 80)开始,然后担心 HTTPS(端口 443)。通常负载均衡器处理 HTTPS,而您的后端只处理 HTTP。
-
更新评论
-
1) 您的问题是由健康检查引起的。健康检查将前往 8080 端口。您是否有服务在侦听 8080 端口? 2) 你有两个命名端口 http->9090 和 https->9090。不要创建两个指向同一个目标端口的命名端口。除非您同时使用两个端口,否则这不是您的问题,但我会删除 https 定义。 3) 您的后端(容器)是否支持 HTTP、HTTPS 或两者都支持?通常你只需要HTTP。 4) 您的配置公开了三个容器端口(80、8080、9090)。您的服务在监听哪一个?删除其他人。
-
5) 弄清楚问题 #4 后,在 VPC 防火墙中启用正确的端口以允许该端口上的流量。
-
是的,我认为健康检查是原因,我发现HC在
verified state中创建了instance-group和lb。我现在有后端 lb 和命名端口,通过 http 协议指向端口 9090。我已将模板设置为仅公开端口 9090。唯一的问题是我是否需要在 vm 实例上强制执行一些防火墙规则以打开 9090 端口,或者如果我在默认网络中有它就可以了?
标签: google-cloud-platform google-compute-engine