0

我正在尝试为我的后端服务部分设置身份感知代理,其中部分驻留在 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,问题也可能会得到解决。这只是一个疯狂的猜测。

十分感谢大家。我期待着您的回复。

4

0 回答 0