Подключение Stati c IP Cloud Функции к облаку SQL - PullRequest
0 голосов
/ 20 марта 2020

Есть несколько хороших ответов для обоих этих сценариев ios - но не вместе.

1. Мне нужно вызвать внешний API через белый статический IP-адрес. См .: Связывание выхода из облачной функции со статическим c IP-адресом a) вызов внешнего API из облачной функции b) маршрутизирует весь выход из этой облачной функции через VP C Connector в vpcnetwork-1 (диапазон IP-адресов = 10.8.10.0/28) c) использует Cloud NAT, который направляет весь трафик c в vpcnetwork-1 через [STATI C IP] (в белом списке внешнего API)

2. Затем мне нужно взять эти данные API и отправить их в экземпляр Cloud SQL (в данном случае MySQL). См .: Подключение к облаку SQL из облачных функций a) создать UNIX подключение к сокету с [Cloud SQL Instance]

Когда я запускаю с VP C Connector (как показано выше), я получаю: 1) УСПЕХА! Я получил данные API, используя мой белый IP-адрес 2) СОЕДИНЕНИЕ ОТКАЗАНО [Cloud SQL Instance] - потому что я использую статический c внешний IP? Использует ли socketpath внешний или подключается в моем облачном проекте Google?

Если я удалю разъем VP C из своей облачной функции, я получу: 1) СОЕДИНЕНИЕ ОТКАЗАНО - этот IP-адрес не включен в белый список (потому что я больше не использую stati c IP) 2) УСПЕХА! Теперь я могу подключиться к [Cloud SQL Instance] (используя UNIX socketpath, userid, password)

Как мне заставить их работать в одной облачной функции? Я вижу, что могу «перенаправлять запросы только на частные IP-адреса через разъем VP C», но я действительно хочу противоположность этому. Я хочу направлять только внешние запросы на соединитель VP C, использовать мой stati c IP, а затем сохранять свою частную маршрутизацию для соединений внутри моего GCP.

ДОБАВЛЕНО: Я использую Javascript mysql для подключения к облаку SQL.

var pool = mysql.createPool({ socketPath: '/cloudsql/[instance_connection_name]',
                              user: uid,
                              password: pwd,
                              database: 'mysql_db' });
var result = pool.query(sql, {}, (err,result)=> {});

Работает нормально, без использования разъема VP C. Когда я использую разъем VP C с внешним IP-адресом stati c, в этом соединении отказывается. Не потому ли, что VP C Connector и экземпляр Cloud SQL не находятся на одном VP C? Я не думаю, что Cloud SQL связан с VP C, не так ли?

1 Ответ

0 голосов
/ 21 марта 2020

Облако SQL На панели мониторинга обзора экземпляров перечислены [Publi c IP-адрес] и [Имя подключения экземпляра]

Для стандартного подключения к облачным функциям я использую:

socketpath:[Instance Connection Name]
user: uid
password: pwd
database: 'mysql_db'

При использовании коннектора VP C я использую

host:[Private (or Public) IP Address]
user: uid
password: pwd
database: 'mysql_db'

Резюме:

[Cloud Function] -> socketpath:[Instance Connection Name] => **SUCCESS**
[Cloud Function] -> host:[Public IP Address] => **FAIL** (Timeout - IP Not Allowed)

Private VPC Connections:
[Cloud Function] -> [VPC Connector] -> socketpath:[Instance Connection Name] => **FAIL** (Connection Refused)
[Cloud Function] -> [VPC Connector] -> host:[Private IP Address] => **SUCCESS** (Set up Private IP in GCP->SQL->Connections)

Public VPC Connection:
[Cloud Function] -> [VPC Connector] -> host:[Public IP Address] => **SUCCESS** (Only after allowing/whitelisting IP of the VPC Connector routed through Cloud NAT)

Инструкции CLI Google Cloud для настройки частного IP: ПОДКЛЮЧЕНИЕ ФУНКЦИЙ GOOGLE CLOUD К ОБЛАКОМ SQL ИСПОЛЬЗОВАНИЕ TCP И UNIX ДОМЕННЫЕ РОЗЕТКИ 2020

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