我希望这里有人可能知道是什么原因造成的。我有一个 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 引用是从哪里来的。我确实为我的集群定义了几个公共 IP,但没有一个与这个 40.12.13.14 地址匹配。如果我在我的服务器设置中创建防火墙规则,这个异常就会消失,我的微服务访问他们的数据库也没有问题。
如果需要这条规则,我显然可以添加它。问题是集群是通过 Python 部署脚本创建的,它无法为该 IP 地址创建防火墙,因为在发生异常之前它不知道该地址将是什么。每次我运行部署脚本创建新集群时,此异常中报告的 IP 地址都会更改。
有谁知道这个 IP 地址与什么相关联,以及我如何确定它将是什么,以便我可以创建所需的防火墙规则?
彼得