INTEGRITY Документация

Сети VPC

VPC Networks позволяют вашим Workers обращаться к любому сервису в вашей приватной сети без предварительной регистрации отдельных хостов или портов. Вы можете привязаться к определённому Cloudflare Tunnel для доступа к любому сервису за этим туннелем, либо для привязки к Cloudflare Mesh для доступа к любому узлу Mesh, клиентскому устройству, маршруту подсети или маршруту хоста, объявленному через Cloudflare Tunnel или Mesh, либо к адресу назначения, доступному через Cloudflare WAN через точку входа (GRE, IPsec или CNI).

Во время выполнения URL, который вы передаёте в fetch() или адрес, который вы передаёте в connect() определяет адрес назначения: любое имя хоста или IP-адрес, доступные через привязанный туннель Cloudflare Tunnel или через Cloudflare Mesh. Используйте fetch() для HTTP-трафика, а также connect() для необработанных TCP-соединений (Redis, MQTT, пользовательские протоколы и другие сервисы, не использующие HTTP). Это отличается от Службы VPC, для которых требуется создавать отдельную привязку для каждой комбинации хоста и порта назначения.

Привязка к Cloudflare Tunnel

Обратитесь к конкретному Cloudflare Tunnel напрямую по его UUID:

{
  "vpc_networks": [
    {
      "binding": "MY_VPC",
      "tunnel_id": "550e8400-e29b-41d4-a716-446655440000",
      "remote": true
    }
  ]
}
[[vpc_networks]]
binding = "MY_VPC"
tunnel_id = "550e8400-e29b-41d4-a716-446655440000"
remote = true

remote флаг должен быть установлен в значение true чтобы включить удалённые привязки при локальной разработке.

Привязка к Cloudflare Mesh

Cloudflare Mesh (ранее WARP Connector) соединяет ваши сервисы, устройства и Workers через глобальную сеть Cloudflare. Если вы привязываете Worker к Cloudflare Mesh с помощью network_id: "cf1:network", ваш Worker может обращаться к:

И всё это без указания конкретного UUID Cloudflare Tunnel.

Используйте cf1:network когда:

Привязка к Cloudflare Mesh с помощью network_id: "cf1:network":

{
  "vpc_networks": [
    {
      "binding": "MY_VPC",
      "network_id": "cf1:network",
      "remote": true
    }
  ]
}
[[vpc_networks]]
binding = "MY_VPC"
network_id = "cf1:network"
remote = true

Использование во время выполнения

HTTP через fetch()

Обращайтесь к любому HTTP-сервису в вашей сети во время выполнения с помощью fetch():

export default {
	async fetch(request: Request, env: Env) {
		// Access a service by private IP
		const response = await env.MY_VPC.fetch("http://10.0.1.50/data");

		// Access another service on a different port
		const dbResponse = await env.MY_VPC.fetch("http://10.0.5.42:5432");

		return response;
	},
};

Если VPC Network не может установить соединение с целевой службой, fetch() выбрасывает исключение.

TCP через connect()

Открывайте прямые TCP-соединения с любым частным адресом назначения с помощью connect(). Это полезно для протоколов, отличных от HTTP, таких как Redis, Memcached, MQTT или пользовательские бинарные протоколы:

export default {
	async fetch(request: Request, env: Env) {
		// Open a TCP connection to a private Redis instance
		const socket = await env.MY_VPC.connect("10.0.1.50:6379");

		// Write a Redis PING command
		const writer = socket.writable.getWriter();
		await writer.write(new TextEncoder().encode("PING\r\n"));
		await writer.close();

		return new Response(socket.readable);
	},
};

Если VPC Network не может установить TCP-соединение, connect() выбрасывает исключение.

VPC Networks и VPC Services: сравнение

VPC Networks и Службы VPC оба варианта подключают Workers к приватной инфраструктуре, но предполагают разные компромиссы.

В следующей таблице приведены различия:

Возможность Сети VPC Службы VPC
Область действия Один Cloudflare Tunnel либо маршруты Cloudflare Mesh и Cloudflare WAN Конкретный хост + порт
Конфигурация tunnel_id (один туннель Cloudflare Tunnel) или cf1:network (в масштабах всего аккаунта) service_id
Протоколы HTTP (fetch()) и TCP (connect()) HTTP (fetch()) или TCP (через Hyperdrive)
Регистрация сервиса Не требуется Обязательно для каждой цели
Когда использовать Динамическое обнаружение, доступ в масштабе сети, обращение к сервисам в рамках вашего аккаунта Фиксированные, каталогизированные сервисы

Следующие шаги