为什么需要此 Azure 防火墙规则?

Why is this Azure firewall rule required?

我希望这里有人知道是什么原因造成的。我有一个 AKS 集群,其中有许多微服务访问 Azure Postgres 数据库服务器中的资源。我为 POD 子网和 Kubernetes 服务子网的 Postgres 服务器定义了防火墙规则。对该 Postgres 服务器中的数据库的所有访问都来自这些子网。无法从外部来源访问此服务器。但是,当我的服务启动时,我总是会遇到这个异常:

2018-12-02 19:23:57.540  INFO [venus,,,] 1 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Servlet dispatcherServlet mapped to [/]
2018-12-02 19:23:57.543  INFO [venus,,,] 1 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Servlet complexGraphQLServlet mapped to [/graphql/*]
2018-12-02 19:23:57.545  INFO [venus,,,] 1 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Servlet zuulServlet mapped to [/zuul/*]
2018-12-02 19:23:58.037  INFO [venus,,,] 1 --- [           main] o.f.core.internal.util.VersionPrinter    : Flyway Community Edition 5.0.7 by Boxfuse
2018-12-02 19:23:58.052  INFO [venus,,,] 1 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2018-12-02 19:23:58.577  WARN [venus,,,] 1 --- [           main] unknown.jul.logger                       : SQLException occurred while connecting to mydbserver.postgres.database.azure.com:5432

org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "40.12.13.14", user "postgres", database "mydb", SSL on
        at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:473)
        at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:205)
        at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
        at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
        at org.postgresql.Driver.makeConnection(Driver.java:452)
        at org.postgresql.Driver.connect(Driver.java:254)

我不知道这个外部 IP 引用是从哪里来的。我确实为我的集群定义了几个 public IP,但没有一个与这个 40.12.13.14 地址匹配。如果我在我的服务器设置中创建防火墙规则,这个异常就会消失并且我的微服务可以毫无问题地访问它们的数据库。

如果需要这条规则,我显然可以添加它。问题是集群是通过 Python 部署脚本创建的,它无法为此 IP 地址创建防火墙,因为在发生异常之前它不知道该地址将是什么。每次我 运行 我的 deplyoyment 脚本创建一个新集群时,此异常中报告的 IP 地址都会更改。

有谁知道这个 IP 地址与什么相关联以及我如何确定它将是什么以便我可以创建所需的防火墙规则?

彼得

在这种情况下,OP 通过升级 Postgre 层并实施 vnet 规则以允许流量解决了问题。

遗憾的是,无法以编程方式获取此 IP。