在 GKE 中,您可以使用外部入口控制器向全世界公开服务,如果您愿意,可以使用 Google Cloud Armor 来管理流量,并在需要时使用代码 403、404、502 拒绝它。
假设我在外部入口控制器下有两个服务:page1.com 和 page2.com
有没有办法配置入口控制器(不一定通过外部入口控制器),以便任何人都可以访问 page1.com,而只有特定 IP(比如说我的家庭 IP)可以访问 page2.com,如果您尝试从其他 IP 访问 page2.com,您的尝试只会超时,而不是返回 403、404 或 502?
我看到有一个使用内部负载均衡器的选项,可以通过 Cloud VPN 或 IAP 访问,但它们似乎不适合,因为使用 Cloud VPN(如果我理解正确的话)您需要一些内部部署网络,而使用 IAP 您仍然会收到使用 Google 帐户登录的提示,而不是超时。
答案1
是的,您可以为每个服务(page1.com 和 page2.com)创建 GKE 入口,然后创建一个云装甲策略,该策略仅允许来自您的家庭 IP。公共服务不需要云装甲策略。
看本文档使用 BackendConfig 将 Cloud Armor 策略附加到您的服务。请注意,也可以为两个服务创建一个入口,并使用主机规则指向每个服务。
答案2
我在外部入口控制器下有两个服务:page1.com 和 page2.com
page1.com 可供任何人访问,page2.com 仅供特定 IP 访问
- 将 page2.com 的服务改为 type:LoadBalancer 并带有静态 IP
- 删除外部入口下的 page2.com 服务,因为点 1 已成为您的 L4 LB。
- 在负载均衡器服务 yaml 上应用 ip 允许(只需谷歌一下就很容易)
- 将页面的外部 IP 路由到 DNS page1.xyz.com -> Ingress Ext 保留 IP,,, page2.xyz.com -> service LB ext 保留 IP