Невозможно подключиться к Cloud SQL из Cloud Run после включения частного IP и отключения publi c iP - PullRequest
1 голос
/ 12 января 2020

У меня есть экземпляр postgreSQL CLoud SQL, к которому я подключаюсь через сокет UNIX и имя экземпляра из контейнера Cloud Run согласно документации. При общедоступном c IP это соединение работает нормально. Я пытался отключить общедоступный IP-адрес c и иметь только частный IP-адрес, поэтому с меня не взимается плата за дальнейшее продвижение IP-протокола c.

При первом создании облака SQL Например, я включил только publi c IP. Через пару дней я включил частный IP. Для связанной сети для частного IP-адреса я принял значение по умолчанию, так как экземпляр Cloud Run находится в том же проекте.

Когда я отключаю publi c IP, мое приложение больше не может подключиться к облаку SQL экземпляр. Я получаю сообщение об отказе в соединении:

sqlalchemy.exc.InterfaceError: (pg8000.core.InterfaceError) ('communication error', ConnectionRefusedError(111, 'Connection refused'))

Как указано выше, я следовал инструкциям на странице Подключение к облаку SQL со страницы Cloud Run:

https://cloud.google.com/sql/docs/postgres/connect-run

Я даже запустил команду gcloud, чтобы обновить существующую развернутую ревизию после отключения общедоступного IP-адреса c и наличия только частного IP, но это не имело никакого значения.

Требуется ли общедоступный c IP для подключения из Cloud Run к Cloud SQL? Я не вижу этого на странице документации по подключению. Или я что-то упустил, когда пытался переключиться только на частный IP? Или мне нужно создать новый Cloud Instance без публичного c IP и go через инструкции по подключению Cloud Run через экземпляр anme снова?

Ответы [ 2 ]

1 голос
/ 13 января 2020

Требуется ли общедоступный c IP-адрес для подключения из Cloud Run к Cloud SQL? Я не вижу этого на странице документации по подключению.

На странице Подключение к облаку SQL со страницы Cloud Run написано: «Примечание. Эти инструкции требуют, чтобы ваш экземпляр Cloud SQL имел общедоступный c IP настроенный адрес. "

Частный IP-доступ - это доступ из виртуального частного облака (VP C) . Чтобы получить доступ к вашему экземпляру через VP C, ресурс, к которому вы подключаетесь, должен быть частью VP C. Cloud Run в настоящее время не поддерживает доступ VP C, поэтому вам нужно будет использовать общедоступный c IP.

0 голосов
/ 13 января 2020

TL; DR : открыть кейс в службу поддержки Google

Ваш кейс интересен, потому что, по-моему, он еще не поддерживается.

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

Кроме того, сегодня невозможно подключить ваш экземпляр Cloud Run к вашему VP C. С помощью функции и App Engine у ​​вас есть безсерверный VP C разъем , но еще не с Cloud Run (он готовится!).

Безсерверный VP C разъем выполняет те же функции такие вещи, как облачный SQL частный IP, я имею в виду пиринг между вашим VP C и облачными функциями (или App Engine) VP C (или чем-то эквивалентным).

И даже если сервер не работает Разъем VP C доступен в Cloud Run, он не уверен, что он работает из-за транзитивности сетевого пиринга . Короче говоря, если у вас есть пиринг между VP C A -> VP C B и между VP C B -> VP C C, вы не можете достичь VP C C из VP C A путем выполнения перехода в VP C B. Замените A на VP C Cloud Run, B на VP C вашего проекта и C на VP C Cloud SQL .

Только прямые сети могут общаться. Транзитивный пиринг не поддерживается. Другими словами, если VP C сеть N1 одноранговая с N2 и N3, но N2 и N3 не подключены напрямую, VP C сеть N2 не может обмениваться данными с VP C сетью N3 через VP C Сетевое пиринг.

Я не проверял с помощью AppEngine или Cloud Function, но этот дизайн не должен работать.

Но я не уверен, поэтому дело в поддержке Google будет позволит вам получить четкий ответ и, возможно, вклад в дорожную карту. Любая ценная информация от службы поддержки Google приветствуется здесь!

...