Последние пару дней я пытался заставить мое развернутое приложение NodeJS Kubernetes LoadBalancer подключиться к экземпляру Google Cloud MySQL. база данных SQL и развертывание Kubernetes существуют в одном проекте Google. Оба варианта ORM для этого проекта Sequelize. Вот фрагмент конфигурации моего соединения:
"deployConfigs": {
"username": DB_USERNAME,
"password": DB_PASSWORD,
"database": DB_DATABASE,
"host": DB_HOST,
"port": 3306,
"dialect": "mysql",
"socketPath": "/cloudsql/INSTANCE_NAME"
}
Когда я запускаю приложение локально с теми же конфигурациями, я могу делать запросы из базы данных. Я также могу нажать URL-адрес NodeJS LoadBalancer, чтобы получить действительный ответ API, если API не попадает в базу данных.
Я внес в белый список мой IP-адрес, а также IP-адрес для NodeJS LoadBalancer API, но я все еще получаю следующий ответ:
{
"name": "SequelizeConnectionError",
"parent": {
"errorno": "ETIMEDOUT",
"code": "ETIMEDOUT",
"syscall": "connect",
"fatal": true
},
"original": {
"errorno": "ETIMEDOUT",
"code": "ETIMEDOUT",
"syscall": "connect",
"fatal": true
}
}
Я следовал инструкциям по созданию Proxy с помощью развертывания Kubernetes, но не думаю, что это обязательно решит мою проблему, потому что я просто хочу подключиться из приложения Kubernetes к постоянной базе данных.
Опять же, я смог успешно поразить удаленную БД при локальном запуске контейнера и локальном запуске приложения узла. Я действительно не уверен, почему это не будет подключаться при развертывании.
Спасибо!