我们正在尝试使用Google App引擎(主要是灵活实例)部署基于微服务的应用程序,该应用程序具有默认服务上的网关和一些提供业务逻辑的微服务。您可能会认为:
foo.appspot.com
service1.foo.appspot.com
service2.foo.appspot.com
完成后here
我希望只能从网关(可能还有其他几台机器)访问服务,而不能从外部访问,但是我无法使它正常工作。
我已经能够在给定的VPC网络上设置所有服务,向该网络中传入的“拒绝所有流量”添加一条规则,但带有标记并允许所有操作的网关除外。 (如该回复here中所述)
这适用于运行时,但是这样做时,我们无法使用gcloud app deploy
进行部署。 (它挂在“更新服务”步骤上)。我尝试允许使用22端口,但似乎这不是正在使用的端口。我还尝试仅阻止80和443端口,但是现在可以再次从此外部访问App Engines service1和service2。
我应该如何配置防火墙使其能够在App Engine上进行部署,并限制仅对网关的服务访问?使用VPC防火墙甚至可以做到这一点,还是我应该使用KCE实例还是要避免使用GCP基础结构并亲自签署/验证请求?
答案 0 :(得分:1)
经过进一步的调查,您现在想要的东西在GAE中是不可能的。
这里有一些可能的解决方法,您可能要尝试:
使用Bastion VM。使用此选项,您将在Bastion VM中拥有默认服务的代码,然后将GAE flex与其他2个服务一起部署,并在其中设置GAE防火墙规则以仅允许与Bastion VM通信。 p>
正如您在问题中所说,您可以使用Kubernetes。这是有关如何deploy a containerized web application的教程。
最后,您可以使用标准的HTTP标头(例如X-Forwarded-For)来确定客户端的IP地址,从而对入站请求执行自己的验证。
答案 1 :(得分:0)