Как подключиться к базе данных GCP PostgreSQL 11 в проекте A из экземпляра go1.12 Flex в проекте B с помощью gorm - PullRequest
0 голосов
/ 09 июля 2020

Некоторое предисловие:

  • У меня нет доступа к проекту, в котором размещена postgres БД.
  • Человек, имеющий доступ к проект, и тот, кто настраивал БД, не может работать со мной напрямую над этим. Мне сказали, что они следовали документации GCP и что с их стороны все настроено правильно.
  • Я могу подключиться из моего локального развертывания приложения, потому что человек, установивший экземпляр БД разрешил мой IP-адрес; это не работает для гибкого развертывания движка приложения.

Проблема:

У меня есть гибкий экземпляр движка приложения, построенный на golang 1.12. Он подключается к экземпляру postgreSQL 11 DB Cloud SQL в другом проекте с помощью github.com/jinzhu/gorm со следующим кодом:

dbUri := fmt.Sprintf("host=%s user=%s dbname=%s password=%s", dbHost, dbUsername, dbName, dbPassword)

conn, err := gorm.Open("postgres", dbUri)
if err != nil {
    log.Printf("Database error: %+v\n", err)
}

dbhost в настоящее время находится в формате IP-адреса базы данных. адрес.

  • Я пробовал / cloudsql / project: region: instance
  • Я пробовал /cloudsql/project:region:instance/.s.pgsql.5432

Соответствующие настройки из app.yaml, которые я использую:

beta_settings:
  cloud_sql_instances: [project:region:instance]
  • Я пробовал добавить = tcp: 5432 со всеми вариантами приведенного выше dbhost

Ошибки:

В журналах ядра приложения в облачной консоли при подключении отображается только следующая информация:

sql: база данных закрыта.

Насколько я понимаю, это означает, что невозможно создать соединение с базой данных.

Эта ошибка соответствует ошибке, которую я получаю при локальном запуске кода с любого компьютера, на котором нет был добавлен его IP-адрес как авторизованная сеть из экземпляра postgreSQL.

* 10 47 * Формализованный вопрос:

С учетом вышеизложенного, какой код, параметры, настройки и т. Д. c. мне нужно добавить или изменить, чтобы успешно подключиться из гибкого развертывания движка приложения к облаку SQL db?

Если бы у меня был доступ к проекту, где находится экземпляр postgres Cloud SQL , есть ли что-нибудь в c, что я мог бы сделать для обеспечения соединения?

Спасибо.

1 Ответ

0 голосов
/ 13 июля 2020

извиняюсь за ответ на мой вопрос.

За выходные мне удалось решить эту проблему. После двойной проверки выяснилось, что экземпляр Cloud SQL не был настроен с частным IP-адресом (поэтому мои заверения в том, что экземпляр настроен правильно, и мои собственные заверения в вопросе были ложными. ).

Необходимо было создать новый экземпляр Cloud SQL и назначить ему частный IP-адрес, поскольку в документации очень четко указано, что существующему экземпляру Cloud SQL нельзя назначить частный IP-адрес один раз. создан без него.

Развертывание App Engine Flex смогло без проблем подключиться с использованием частного IP-адреса.

Еще раз извините!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...