我正在尝试为我的后端服务部分设置身份感知代理,其中部分驻留在 GCP 和其他本地,根据以下链接 为本地应用启用 IAP 和本地IAP 概述中给出的说明应用
之后,按照指南,我最终处于部分状态,在 GCP 上运行在 https 端点上的服务可以通过 IAP 完全访问。但是,无法通过 pod* 和外部负载均衡器* 访问在本地运行的应用程序。
当前架构如下:
遵循的步骤
关于 GCP 项目
在我的情况下,在具有一个子网的任何区域中创建了一个 VPC 网络(asia-southeast1)
使用的 IAP 连接器https://github.com/GoogleCloudPlatform/iap-connector
为 2 个域配置了映射。
For app in GCP
来源:gcp.domain.com
目的地:app1.domain.com(服务于 https 端点)
For app in on-prem(Another GCP project)
来源:onprem.domain.com
目的地:app2.domain.com(服务于 https 端点,但未暴露于互联网)
在两个项目之间配置了 VPN 隧道,因此网络得到对等互连
为部署创建的负载均衡器启用 IAP。
添加了相应的帐户以允许访问具有 IAP 网络用户角色的服务。
On-prem
在具有一个子网 (asia-southeast1) 的区域中创建 VPC 网络
在该区域的 VPC 上创建 VM
将该虚拟机分配给实例组
创建内部 Https 负载均衡器并选择实例组作为后端
使用 ssl 的安全负载均衡器 http
为第一个项目设置 VPN 隧道
我试过什么?
- 登录到 pod 并 ping 不同的 pod。所有吊舱都可以到达。
- 登录到节点并在端口 80 和 443 上 ping 远程 VM 都可以访问。
- 从 pod 内部 ping 远程虚拟机。不能达到。
预期行为:
- 用户向 app1.domain.com 上的负载均衡器发出请求,IAP 通过 OAuth 对用户进行身份验证和授权,并授予对 webapp 的访问权限。
- 用户向 app2.domain.com 上的负载均衡器发出请求,IAP 使用 OAuth 对用户进行身份验证和授权,并授予对在本地运行的 webapp 的访问权限。
实际行为
- 对 app1.domain.com 的请求在验证网站后会提示 OAuth 屏幕返回给用户。
- 对 app2.domain.com 的请求在浏览器身份验证后提示 OAuth 屏幕返回 503 - “No healthy upstream”
笔记:
- 我正在使用一个单独的 GCP 项目来模拟本地。
- 这两个项目都通过 VPN 隧道对等。
- 两个对等项目在同一区域中都有子网。
- 我在我的本地项目中使用了内部 https 负载均衡器,以使我的虚拟机在我的宿主项目中可见,以便外部负载均衡器可以将请求路由到虚拟机的 https 端点。
** 我怀疑如果 pod 能够访问远程 VM,问题也可能会得到解决。这只是一个疯狂的猜测。
十分感谢大家。我期待着您的回复。