关于创建 VPC 访问连接器的困惑



>我正在尝试设置无服务器 VPC 访问

无服务器 VPC 访问使您能够从云函数直接连接到计算引擎虚拟机实例、内存存储实例、云 SQL 实例、

听起来很棒。但是文档对初学者来说不是很友好。第 2 步是创建一个连接器,对此我有几个问题:

在网络字段中,选择要连接的 VPC 网络。

我在这里的下拉菜单只包含"默认"。这正常吗?IO 应该在这里看到什么?

在 IP 范围

字段中,输入未使用的 CIDR/28 IP 范围。此范围内的地址用作通过连接器发送的流量的源地址。此 IP 范围不得与 VPC 网络中的任何现有 IP 地址预留重叠。

我不知道在这里做什么。我尝试使用链接文档中的信息首先(输入我所选区域的IP,然后输入该区域以外的IP。两者都会导致使用错误创建的连接器。"Connector is in a bad state, manual deletion is recommended">

如果创建失败,文档将继续执行几个故障排除步骤:

指定不与 VPC 网络中的任何现有 IP 地址预留重叠的 IP 范围。

我不知道这意味着什么。也许就像,如果我有其他连接器,我应该确保新连接器的 IP 范围不会与这些连接器重叠。这只是一个猜测,但无论如何我没有。

授予项目权限,以使用项目中具有 ID 无服务器 vpc 访问映像的计算引擎虚拟机映像。有关如何相应地更新组织策略的信息,请参阅设置映像访问约束。

这让我想到了另一个关于更新组织的"图像策略"的文档。这个让我如此不知所措,我什至认为我不应该在这里。

这一切都始于只想从Firebase连接到SQL Server实例。创建 VPC 连接器似乎是一个很好的步骤,但我只是在每个障碍中都摔倒了。云居民可以帮我解决其中的一些困惑点吗?

我认为您已经解决了这个问题,但我会写一个答案来总结所有步骤以供将来参考。

1. 创建无服务器 VPC 访问

我认为最好的参考是按照本文档中的步骤进行操作。在步骤7中,它说以下内容:

在 IP 范围

字段中,输入未保留的 CIDR/28 IP 范围。

例如,您可以使用的 IP 是 10.8.0.0/28 甚至 10.64.0.0/28,条件是不用于任何其他网络。您可以检查哪些 IP 正在使用到VPC 网络> VPC 网络。在"网络"字段中,您将拥有"默认"选项,因此没关系。

这可能需要几分钟,因此在此期间您可以创建SQL Server/MySQL/PostgreSQL实例。

2. 创建云SQL实例

创建所需的实例(MySQL/PostgreSQL/SQL Server(。在您的情况下,它将是一个SQL Server实例。此外,请检查这些步骤以在创建时为您的实例配置私有 IP,或者如果您已创建实例,则可以检查这一点。记下私有 IP,因为稍后将使用它。

3. 创建云函数

在创建云函数之前,您需要向 CF 服务账号授予使用 VPC 的权限。请按照以下步骤操作。

然后按照以下步骤将函数的连接器配置为使用 VPC。在步骤 5 中,它说以下内容:

在 VPC 连接器字段中,按以下格式输入连接器的完全限定名称:

projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME

无需使用此格式添加您的 VPC。已经有一个列表,您可以在其中选择 VPC。最后部署您的函数。

我写了一个小函数来测试连接。我更喜欢使用Python,但它比NodeJS需要更多的系统依赖关系。

索引.js

var express = require('express');
var app = express();
var sql = require("mssql");
exports.helloWorld = (req, res) => {
var config = {
user: 'sqlserver',
password: 'password',
server: 'Your.SQL.Priavte.IP', 
database: 'dbname' 
};
// connect to your database
sql.connect(config, function (err) {
if (err) console.log(err);
// create Request object
var request = new sql.Request();

// query to the database and get the records
request.query('select * from a_table', function (err, recordset) {
if (err) console.log(err)
// send records as a response
res.send(recordset);
});
});
};

package.json

{
"name": "sample-http",
"version": "0.0.1",
"dependencies": {
"express": "4.17.1",
"mssql": "6.0.1"
}
}

仅此而已!:D

值得一提的是,此过程更多的是将Cloud Functions连接到SQL Server,因为已经有一种更简单的方法将CF连接到PostgreSQL和MySQL。

我发现对于此类连接器可以使用的 IP 数量存在硬性限制。可以增加配额,也可以切换到其他区域。 对 IP 的硬限制由免费层 https://console.cloud.google.com/iam-admin/quotas 的配额施加。

不在免费套餐中时,可以请求增加配额。

相关内容

  • 没有找到相关文章

最新更新