Почему требуется это правило брандмауэра Azure?

Я надеюсь, что кто-то здесь может иметь представление, что вызывает это. У меня есть кластер AKS с несколькими микросервисами, которые обращаются к ресурсам на сервере базы данных Azure Postgres. У меня есть правила брандмауэра, определенные для сервера Postgres как для подсети POD, так и для подсети службы Kubernetes. Все обращения к базам данных на этом сервере 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-адрес и как я могу определить, каким он будет, чтобы создать требуемое правило брандмауэра?

Питер

2 ответа

Решение

В этом случае OP решил проблему, обновив уровень Postgre и внедрив правила vnet для разрешения трафика.

К сожалению, нет никакого способа программно получить этот IP.

Другие вопросы по тегам